こんにちは、私はAndroid開発にかなり新しいです、そして、私は断片の使用に苦労しています。私は4例持っている私のfragmentPageAdapterでAndroidViewのGridViewの実装
:
public Fragment getItem(int arg0) {
// TODO Auto-generated method stub
switch (arg0) {
case 0:
return new friFragment();
case 1:
return new freeFragment();
case 2:
return new mixedFragment();
case 3:
return new recFragment();
default:
break;
}
return null;
}
を私はeasliy限りフラグメントは任意のコードが含まれていないとして、他の1つの断片にスライドすることができます。しかし、フラグメントの1つにGridViewを実装したい(recFragment case 3)。私の最初の試みは、私はエラーを受け取るないことを延ばすonCreateView
にこれはに働くpublic View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
getActivity().setContentView(R.layout.activity_rec);
myGrid = (GridView) getActivity().findViewById(R.id.recGrid);
myGrid.setAdapter(new recAdapter(getActivity().getApplicationContext(), items));
myGrid.setOnItemClickListener(this);
return inflater.inflate(R.layout.activity_rec,container,false);
を、アダプタを初期化するためだったが、ケース2は、それだけではなく、3をケースにジャンプされた後、0.5秒間表示され、この時点で断片間をスライドすることは不可能です。
ONATTACH使用:
のjava.lang.NullPointerException:「無効android.widget.GridView.setAdapter(android.widgetを仮想メソッドを呼び出そうと
public void onAttach(Context context) { super.onAttach(context); this.context = context; myGrid = (GridView) getActivity().findViewById(R.id.recGrid); myGrid.setAdapter(new recAdapter(getActivity().getApplicationContext(), items)); myGrid.setOnItemClickListener(this); }
は、この致命的な例外を生成します。 ListAdapter) 'をヌルオブジェクト参照 でtryouts.demoapplication.recFragment.onAttach(recipesFragment.java:42) android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1019)android.support.v4.app.BackStackRecord.beginTransitionでandroid.support.v4.app.BackStackRecord.ensureFragmentsAreInitialized(BackStackRecord.java:1077) (BackStackRecord.java:1032)android.support.v4.appで で。 BackStackRecord.run(BackStackRecord.java:658) (android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1617) android.support.v4.app.FragmentManagerImpl.executePendingTransactions(FragmentManager.java:570) android.support.v4.app.FragmentPagerAdapter.finishUpdate(FragmentPagerAdapter.java:141) android.support.v4.view.ViewPager.populate(ViewPager.java:1177) android.support.v4.view.ViewPager.populate(ViewPager.java:1025) android.support.v4.view.ViewPager $ 3.run(ViewPager.java:254) android.view.Choreographer $ CallbackRecord。 android.view.Choreographer.doCallbacks(Choreographer.java:858) (android.view.Choreographer.java:670) (android.view.Choreographer.java:603) (android.view.Choreographer $ FrameDisplayEventReceiver)で実行します。 android.os.Looper.loopでandroid.os.Handler.dispatchMessage(Handler.java:95) でandroid.os.Handler.handleCallback(Handler.java:739) で実行(Choreographer.java:844) ( Looper.java:148) android.app.ActivityThread.main(ActivityThread.java:5417) (java.lang.reflect.Method.invoke)(ネイティブメソッド) at com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java :726) at com.android.internal.os.ZygoteInit.main(ZygoteInit。java:616)
Google &の検索の時間を経て、私はこの問題が文脈にあることを知りました。私は解決策がonAttachであると思ったが、あなたが見ることができるように、それは私を助けなかった。もちろん、私はonAttach関数の使い方を誤解しています。これは非常にうまくいく可能性があります。
コンテキストが問題であることが正しいとすれば、どのように正しいコンテキストを取得できますか?
または、おそらく私のアプローチは、gridviewを実装するには間違っていますか?もしそうであれば、断片化したグリッドビューの適切な実装をどのように作成することができるか、提案はありますか?
こんにちは感謝を助けることができます。しかし、これは基本的には私の最初の試みでした:)それは意図したとおりに動作しません。 –
あなたのアクティビティがnullです。アクティビティがあるフラグメントのonActivityCreated関数をチェックしてください。ただし、より良い方法はAliによって提案されたものです。 public void onAttach(コンテキストコンテキスト){ super.onAttach(context); this.context = context; ビューrootView = inflater.inflate(R.layout.activity_rec、container、false); myGrid =(GridView)rootView.findViewById(R.id.recGrid); myGrid.setAdapter(新しいrecAdapter(context、items)); myGrid.setOnItemClickListener(this); } – surya
私はすでに試したことをしようとしているようです。しかし、たぶんあなたが意味することを理解していない私だけです。 –