2

私は今日、小さな問題に遭遇しました。私は自分のアプリでボトムナビゲーションビューを作っていました。ボタンをクリックすると、画面上のフラグメントが置き換えられました(そして完璧に動作します)。 しかし、アプリを起動した直後、ボタンを一切クリックしないと、画面に断片が表示されません。 ボタンをクリックした後にフラグメントが表示されていることに気付きました。デフォルトのフラグメント(kalkulatorFragment)が必要です。 私は...メインアクティビティに表示されるデフォルトのフラグメントを設定するにはどうすればよいですか?

public class Main extends AppCompatActivity { 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    BottomNavigationView navigation = (BottomNavigationView) findViewById(R.id.navigation); 
    navigation.setOnNavigationItemSelectedListener(mOnNavigationItemSelectedListener); 
} 

private BottomNavigationView.OnNavigationItemSelectedListener mOnNavigationItemSelectedListener 
     = new BottomNavigationView.OnNavigationItemSelectedListener() { 

@Override 
public boolean onNavigationItemSelected(@NonNull MenuItem item) { 
    FragmentManager fm = getFragmentManager(); 
    FragmentTransaction ft = fm.beginTransaction(); 

    kalkulatorFragment kalkulator_fragment = new kalkulatorFragment(); 
    wzoryFragment wzory_fragment = new wzoryFragment(); 
    definicjeFragment definicje_fragment = new definicjeFragment(); 

     switch (item.getItemId()) { 
      case R.id.kalkulator: 
       ft.replace(android.R.id.content, kalkulator_fragment); 
       ft.commit(); 
       return true; 

      case R.id.wzory: 
       ft.replace(android.R.id.content, wzory_fragment); 
       ft.commit(); 
       return true; 

      case R.id.definicje: 
       ft.replace(android.R.id.content, definicje_fragment); 
       ft.commit(); 
       return true; 
     } 
     return false; 
    } 
<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:design="http://schemas.android.com/apk/res-auto" 
xmlns:tools="http://schemas.android.com/tools" 
android:id="@+id/linear" 
android:layout_width="match_parent" 
android:layout_height="match_parent"> 

<FrameLayout 
    android:layout_width="match_parent" 
    android:layout_height="match_parent"> 

    <fragment 
     android:id="@+id/definicjeFragment" 
     android:name="com.thegodofcoding.adamgreloch.ultracalcalpha.definicjeFragment" 
     android:layout_width="0dp" 
     android:layout_height="match_parent" 
     android:layout_weight="1" 
     tools:layout="@layout/definicje_view" /> 

    <fragment 
     android:id="@+id/wzoryFragment" 
     android:name="com.thegodofcoding.adamgreloch.ultracalcalpha.wzoryFragment" 
     android:layout_width="0dp" 
     android:layout_height="match_parent" 
     android:layout_weight="1" 
     tools:layout="@layout/wzory_view" /> 

    <fragment 
     android:id="@+id/kalkulatorFragment" 
     android:name="com.thegodofcoding.adamgreloch.ultracalcalpha.kalkulatorFragment" 
     android:layout_width="0dp" 
     android:layout_height="match_parent" 
     android:layout_weight="1" 
     tools:layout="@layout/kalkulator_view" /> 
</FrameLayout> 


<android.support.design.widget.BottomNavigationView 
    android:id="@+id/navigation" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:layout_gravity="bottom" 
    android:background="@color/bottomNavBar" 
    android:layout_alignParentBottom="true" 
    design:menu="@menu/bottom_nav_items" /> 

感謝:)私はちょうどそれを考え出し

答えて

2

[OK]を何とかそれを設定するために全力をしようとしませんが、何も成功してきました。 ft.replaceをonCreate()メソッドに移動したので、アクティビティの作成直後にkalkulatorFragmentが表示されます。あなたはOUTSIDEのOnCreateメソッドのこのコードを使用する必要が

public class Main extends AppCompatActivity { 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    kalkulatorFragment kalkulator_fragment = new kalkulatorFragment(); 
    FragmentManager fm = getFragmentManager(); 
    FragmentTransaction ft = fm.beginTransaction(); 

    ft.replace(android.R.id.content, kalkulator_fragment); 
    ft.commit(); 

    BottomNavigationView navigation = (BottomNavigationView) findViewById(R.id.navigation); 
    navigation.setOnNavigationItemSelectedListener(mOnNavigationItemSelectedListener); 
} 
-1

navigation.setSelectedItemId(R.id.IdOFYourItemFromBottomNavigationMenuItems)。

私は理由はわかりませんが、OnCreateメソッドの内部では機能しません。 OnCreateメソッド内で宣言して初期化することはできますが、そこにデフォルトの項目を設定することはできません。

私の場合は、OnCreateOptionsMenuの内部で使用しています。

関連する問題