2017-08-11 24 views
3

私の問題に対する相対的な投稿を見ましたが、私の問題は解決していません。 3つのフラグメントでスワイプビューを取得しようとしています。私は、この持っている主なフラグメントで :ここFragmentStatePagerAdapterがgetItem()を呼び出していません

public View onCreateView(LayoutInflater inflater, ViewGroup container, 
         Bundle savedInstanceState) { 
    // Inflate the layout for this fragment 
    View vue = inflater.inflate(R.layout.fragment_conversions, container, false); 

    ConversionsPagerAdapter cPageAdapter = new ConversionsPagerAdapter(getActivity().getSupportFragmentManager()); 
    ViewPager vp = vue.findViewById(R.id.conversionsPager); 
    cPageAdapter.getItem(0); 
    vp.setAdapter(cPageAdapter); 


    Button convKmhKts = (Button) vue.findViewById(R.id.convKmhKts); 
    convKmhKts.setText("..."); 
... 

は私のFragmentStatePagerAdapterのクラスである:

public class ConversionsPagerAdapter extends FragmentStatePagerAdapter{ 
    public ConversionsPagerAdapter(FragmentManager fm) { 
     super(fm); 
     Log.i("ARKA", "FragmentStatePagerAdapter CONSTRUCTOR"); 
    } 

    @Override 
    public Fragment getItem(int i) { 
     return ConversionFragment.newInstance(i); 
    } 

    @Override 
    public int getCount() { 
     return 1; 
    } 
} 

とタブを表示するフラグメントfinnaly:

public class ConversionFragment extends Fragment { 
    public static final String ID_CONVERSION = "id_conversion"; 

    public static ConversionFragment newInstance(int pos) { 
     ConversionFragment stf = new ConversionFragment(); 
     Bundle args = new Bundle(); 
     args.putInt("pos", pos); 
     stf.setArguments(args); 
     return stf; 
    } 


    public ConversionFragment() { 
    } 

    @Override 
    public View onCreateView(LayoutInflater inflater, 
          ViewGroup container, Bundle savedInstanceState) { 
     // The last two arguments ensure LayoutParams are inflated 
     // properly. 

     Bundle args = getArguments(); 
     int idConversion = args.getInt(ID_CONVERSION); 
     Log.i("idConversion", String.valueOf(idConversion)); 
     int idVue; 

     switch (idConversion){ 
      case 0: idVue = R.layout.fragment_conversions_vitesse; 
       break; 
      case 1: idVue = R.layout.fragment_conversions_vitesse; 
      default: idVue = R.layout.fragment_conversions_vitesse; 
       break; 
     } 

     View rootView = inflater.inflate(idVue, null); 
     return rootView; 
    } 
} 

を実際にされgetItem()は決して呼び出されません。

れるjava.lang:私はこれを取得、私のボタンをアクセスもしようとしているときに ... を私はgetChildFragmentManager()によってgetActivity()getSupportFragmentManagerを()変更しようとするが、それは良い方法ではないようです。 NullPointerException:ヌルオブジェクトリファレンスで仮想メソッド 'void android.widget.Button.setOnClickListener(android.view.View $ OnClickListener)'を呼び出そうとしました

私がボタンを使用している行。

答えて

0

あなたは最初のページャを表示し、項目メソッドを呼び出す取得しようとするここで間違っ

cPageAdapter.getItem(0); 
vp.setAdapter(cPageAdapter); 

セットアダプターを行っています。

vp.setAdapter(cPageAdapter); 
cPageAdapter.getItem(0); 
+0

こんにちは、あなたの答えをありがとう、それはテストのためだけだった、私はこの行を取り消すことを忘れていますが、私はあなたのideraを試してみます。 –

+0

私はそれを試していますが、私はまだnullpointerexceptionを持っています... –

0

あなたはフラグメント内ViewPagerを使用している場合は、そのgetChildFragmentManager()getActivity().getSupportFragmentManager()を交換してみてくださいchieldフラグメントマネージャを使用する必要があります。すべてのものに1つのフラグメントマネージャを使用すると、いくつかのバグが発生します。

For more information

+0

あなたの答えをありがとう。私はalredyそれを試して、私は同じ問題:ChildManagerとnullpointerの例外が... –

0

[OK]を、 problemeは私が膨張されていないコンポーネントアクセスもしようということでした。私は子供のフラグメントでそれにアクセスも、今、それは大丈夫だ

convKmhKts.setText("..."); 

を....

関連する問題