前提・実現したいこと
kotlinでmvp構成でアプリケーションを作っています。
bottomnavigation viewでの画面遷移を、1つのactivity、3つのfragmentを用いて行おうと考えています。
下のコードではoriginActivityで最初はoriginFriendFragmentを開いて、bottomnavでoriginFriendFragmentからoriginMyPageFragmentに遷移しようとしています。
具体的なエラーとしては、onCreateのOriginMyPgaePresenterの前にoriginMyPageFragmentの初期化をしたいのですが、どこで初期化をすればよいのか分かっておらず困っています。
よろしくお願いいたします。
発生している問題・エラーメッセージ
kotlin.UninitializedPropertyAccessException: lateinit property originMyPageFragment has not been initialized
該当のソースコード
kotlin
1//importは省略 2 3class OriginActivity : AppCompatActivity() 4{ 5 6 7 8 //ここでfragmentの初期化 9 lateinit var originFriendFragment: OriginFriendFragment 10 lateinit var originEventFragment: OriginEventFragment 11 lateinit var originMyPageFragment: OriginMyPageFragment 12 lateinit var bottomNav : BottomNavigationView 13 14 15 object LogicValues{ 16 const val originFriendFragmentId = 0 17 const val originEventFragmentId = 1 18 const val originMyPageFragmentId = 2 19 } 20 21 22 private val mOnNavigationItemSelectedListener= 23 BottomNavigationView.OnNavigationItemSelectedListener{ 24 item -> 25 when (item.itemId) { 26 R.id.originFriendActivity -> { 27 replaceFragmentInActivity(originFriendFragment,originFriendFragmentId) 28 return@OnNavigationItemSelectedListener true 29 } 30 31 R.id.originEventActivity -> { 32 replaceFragmentInActivity(originEventFragment,originEventFragmentId) 33 return@OnNavigationItemSelectedListener true 34 } 35 36 R.id.originMyPageActivity -> { 37 replaceFragmentInActivity(originMyPageFragment,originMyPageFragmentId) 38 return@OnNavigationItemSelectedListener true 39 } 40 } 41 false 42 } 43 44 45 46 override fun onCreate(savedInstanceState: Bundle?) 47 { 48 49 50 super.onCreate(savedInstanceState) 51 setContentView(R.layout.activity_origin) 52 53 bottomNav = findViewById<BottomNavigationView>(R.id.btm_nav).apply{ 54 setOnNavigationItemSelectedListener( 55 mOnNavigationItemSelectedListener 56 )} 57 58 setupActionBar(R.id.toolbar) { 59 title = getString(R.string.friend_text) 60 setDisplayHomeAsUpEnabled(true) 61 } 62 63 originFriendFragment = supportFragmentManager 64 .findFragmentById(R.id.origin_content_frame) as OriginFriendFragment? 65 ?: OriginFriendFragment.newInstance().also { 66 replaceFragmentInActivity(it, R.id.origin_content_frame) 67 } 68 69 70 71 //TODO ここはダガーで書かないとやばい 72 OriginFriendPresenter( 73 FriendsRepository.getInstance( 74 FriendsRemoteDataSource.getInstance(), 75 FriendsLocalDataSource.getInstance()), 76 UserRepository.getInstance( 77 UserRemoteDataSource(), 78 UserLocalDataSource.getInstance()), 79 originFriendFragment 80 ) 81 82 83 84 OriginMyPagePresenter( 85 FriendsRepository.getInstance( 86 FriendsRemoteDataSource.getInstance(), 87 FriendsLocalDataSource.getInstance()), 88 GroupsRepository.getInstance( 89 GroupsRemoteDataSource.getInstance(), 90 GroupsLocalDataSource.getInstance() 91 ), 92 UserRepository.getInstance( 93 UserRemoteDataSource.getInstance(), 94 UserLocalDataSource.getInstance()), 95 originMyPageFragment 96 ) 97 98 } 99 100 101 companion object{ 102 const val EXTRA_FRIEND_ID = "FRIEND_ID" 103 const val EXTRA_GROUP_ID = "GROUP_ID" 104 } 105}
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。