分からないこと
MainActivity画面の下部にBottomNavigationViewを作成して、複数のFragment画面に行けるようにしたのですが、2か所でエラーが発生します。
エラーの箇所を削除してエミュレータを起動しようとすると、アプリが落ちます。
BottomNavigationViewに最初に表示される予定のFragmentはfirstFragment.javaです。
画面には一応ナビゲーションバーはきちんと表示されています。
作成したFragment.javaと、対するmy_navi.xmlのIDは
・firstFragment.java・・・・fragmentfirst3
・secondFragment.java・・・・fragmentsecond2
・thirdFragment.java・・・・fragmentthird
です。
コード
activitymainxml
1 2<中略> 3 4 <com.google.android.material.bottomnavigation.BottomNavigationView 5 android:id="@+id/bottomNavigationView" 6 android:background="#fff" 7 android:layout_width="411dp" 8 android:layout_height="48dp" 9 app:layout_constraintBottom_toBottomOf="parent" 10 app:layout_constraintEnd_toEndOf="parent" 11 app:layout_constraintStart_toStartOf="parent" 12 app:menu="@menu/bottom_menu" 13 /> 14 15 <fragment 16 android:id="@+id/fragment2" 17 android:name="androidx.navigation.fragment.NavHostFragment" 18 android:layout_width="416dp" 19 android:layout_height="45dp" 20 app:defaultNavHost="true" 21 app:layout_constraintBottom_toBottomOf="parent" 22 app:layout_constraintEnd_toEndOf="parent" 23 app:layout_constraintStart_toStartOf="parent" 24 app:navGraph="@navigation/my_nav" /> 25
mainactivityjava
1import androidx.fragment.app.Fragment; 2import com.google.android.material.bottomnavigation.BottomNavigationView; 3 4public class MainActivity extends Activity { 5 6 private BottomNavigationView.OnNavigationItemSelectedListener navListener = 7 new BottomNavigationView.OnNavigationItemSelectedListener() { 8 @Override 9 public boolean onNavigationItemSelected(@NonNull MenuItem item) { 10 Fragment selectedFragment = null; 11 12 switch (item.getItemId()){ 13 case R.id.firstFragment3: 14 selectedFragment = new firstFragment(); //new firstFragmentに赤線が引かれるがmsgなし 15 break; 16 case R.id.secondFragment2: 17 selectedFragment = new secondFragment(); 18 break; 19 case R.id.thirdFragment: 20 selectedFragment = new thirdFragment(); 21 break; 22 } 23 //selectedFragmentに赤線 msgなし 24 getFragmentManager().beginTransaction().replace(R.id.fragment_container_view_tag,selectedFragment).commit(); 25 26 return true; 27 } 28 }; 29 30 @Override 31 protected void onCreate(Bundle savedInstanceState) { 32 33 <中略> 34 35 BottomNavigationView bottomNav = findViewById(R.id.bottomNavigationView); 36 bottomNav.setOnNavigationItemReselectedListener((BottomNavigationView.OnNavigationItemReselectedListener) navListener); 37 getFragmentManager().beginTransaction().replace(R.id.fragment_container_view_tag,firstFragment()).commit(); 38 39 } 40 41} 42
mynavxml
1 <fragment 2 android:id="@+id/fragment1" 3 android:name="com.example.test.Fragment1" 4 android:label="fragment_1" 5 tools:layout="@layout/fragment_1" /> 6 <fragment 7 android:id="@+id/fragment2" 8 android:name="com.example.test.Fragment2" 9 android:label="fragment_2" 10 tools:layout="@layout/fragment_2" /> 11 <fragment 12 android:id="@+id/fragment3" 13 android:name="com.example.test.Fragment3" 14 android:label="fragment_3" 15 tools:layout="@layout/fragment_3" />
bottommenuxml
1 <fragment 2 android:id="@+id/fragment1" 3 android:name="com.example.test.Fragment1" 4 android:label="fragment_1" 5 tools:layout="@layout/fragment_1" /> 6 <fragment 7 android:id="@+id/fragment2" 8 android:name="com.example.test.Fragment2" 9 android:label="fragment_2" 10 tools:layout="@layout/fragment_2" /> 11 <fragment 12 android:id="@+id/fragment3" 13 android:name="com.example.test.Fragment3" 14 android:label="fragment_3" 15 tools:layout="@layout/fragment_3" />
回答1件
あなたの回答
tips
プレビュー