2017-12-27 55 views
0

私は、タブ付きレイアウトフラグメントを保持するアクティビティを持っています。私は2つのタブを持っている場合はすべてが正常に動作しますが、私は新しいタブを追加するとき、私はここでClassCastException新しいフラグメントがSectionsPagerAdapterに追加されたとき

Caused by: java.lang.ClassCastException: rauhalamika.rcontrolble.HomeFragment cannot be cast to rauhalamika.rcontrolble.ManualFragment

を得るSectionsPagerAdapterです:

public class SectionsPagerAdapter extends FragmentPagerAdapter { 
 

 
     public SectionsPagerAdapter(FragmentManager fm) { 
 
      super(fm); 
 
     } 
 

 
     @Override 
 
     public Fragment getItem(int position) { 
 
      switch (position){ 
 
       case 0: 
 
        PresetsFragment presets = new PresetsFragment(); 
 
        return presets; 
 
       case 1: 
 
        ManualFragment manual = new ManualFragment(); 
 
        return manual; 
 
       case 2: 
 
        HomeFragment home = new HomeFragment(); 
 
        return home; 
 
       default: 
 
        return null; 
 
      } 
 
     } 
 

 
     @Override 
 
     public int getCount() { 
 
      // Show 3 total pages. 
 
      return 3; 
 
     } 
 

 
     @Override 
 
     public CharSequence getPageTitle(int position) { 
 
      switch (position) { 
 
       case 0: 
 
        return "Presets"; 
 
       case 1: 
 
        return "Manual"; 
 
       case 2: 
 
        return "Home"; 
 
      } 
 
      return null; 
 
     } 
 
    }

そして、問題は、私がManualFragmentのメソッドをこのようなアクティビティから呼び出すときに発生しますS:

((ManualFragment)getSupportFragmentManager().findFragmentById(R.id.container)).updatePressure(values);

この方法は、ManualFragmentでTextViewsの束を更新します。

私はPresetsFragmentをManualFragmentだけ持っていればすべて動作しますが、HomeFragmentを追加するとアプリがクラッシュします。

私は間違っていますか?

+0

パッケージのタイプが一致するかどうかを確認してください。android.support.v4.app.Fragment、android.support.Fragment – Praveen

+0

サポートライブラリを使用していますが、そこに不一致はありません。 –

答えて

0

FragmentPagerAdapterを使用すると、IDでフラグメントを取得できません。

getSupportFragmentManager().findFragmentById(R.id.container) 

読むThis threadフラグメントをタグ付けするための

getSupportFragmentManager().findFragmentByTag("f1") 

に変更し、これを。

関連する問題