2017-10-07 9 views
0

私はAndroidにはかなり新しく、フラグメントを使用することを学んでいます。 BottomNavigationビューの特定のタブが選択されたときにTextviewを表示するフラグメントを作成しました。私はこのようなフラグメントを開く:「ワークアウト」ボタンは、このようなように選択されたときにフラグメントが読み込まれていて、アクティビティから呼び出すときに読み込まない

public void switchToWorkoutFragment() { 
     FragmentManager manager = getSupportFragmentManager(); 
     manager.beginTransaction().replace(R.id.content, new 
      ListFragment()).commit(); 
    } 

は、それから私は、この関数を呼び出す:

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

     @Override 
     public boolean onNavigationItemSelected(@NonNull MenuItem item) { 
      switch (item.getItemId()) { 
       case R.id.navigation_home: 
        mTextMessage.setText("Stats Fragment"); 
        return true; 
       case R.id.navigation_dashboard: 
        mTextMessage.setText("Workout Fragment"); 
        switchToWorkoutFragment(); 
        return true; 
       case R.id.navigation_notifications: 
        mTextMessage.setText("Goals Fragment"); 
        return true; 
      } 
      return false; 
     } 

    }; 

私はワークアウトボタンを押すと、フラグメントはちょうどありませんロードしたい。それは回転アイコンと一緒に無期限に座り、何もロードしません。なぜ私はそれがそれを行うだろうか分からない、ロードするためにそこに多くのものがない(私が言ったように、それは単なるテキストビューです)

答えて

0

リスナーをビューに設定しましたか? ように:あなたはswitchToWorkoutFragment方法でnew ListFragment()を渡すところ

(BottomNavigationView) nav = findViewById(R.id.bottom_navigation_panel); 
nav.setOnNavigationItemSelectedListener(mOnNavigationItemSelectedListener); 
+0

うん、それは中のonCreateメソッドで設定されます:だから、このような何かを行うことができますMainActivity } –

+0

ListFragmentの代わりにFrameLayoutまたはFragmentLayoutにします。 – Shmuel

0

問題があります。 ListFragmentにはアイテムを表示するListViewが含まれています。このListViewには、表示するデータをプルするアダプタが必要です。アダプタを設定してデータを表示することなく完全に新しいListFragmentを渡すので、Fragmentには何も表示されません。アダプタを設定すると、回転するアイコンを非表示と正確に(またはデータなし)ListFragmentを表示するのに十分であることを

ListFragment fragment = new ListFragment(); 
ArrayAdapter<String> adapter = new ArrayAdapter<>(this, android.R.layout.simple_list_item_1); 
adapter.addAll(Arrays.asList(new String[]{"Item one", "Item two", "Item 3"})); 
fragment.setListAdapter(adapter); 

getSupportFragmentManager() 
     .beginTransaction() 
     .add(R.id.fragmentContainer, fragment) 
     .commit(); 

関連する問題