1

フラグメントで getView を呼び出すと、NULL が返される理由がわかりません。 アプリをデバッグしたonCreateView メソッドの実行直後getView を呼び出す

ことができることを知っています。最初に onCreateView メソッドが呼び出されることを確認しました。 だからどこに問題があるのか​​わからない。 私のコードをお見せします: これが私の主な活動であり、ユーザーが引き出しメニューをクリックすると、メニューのどの音声が押されているかを確認します:





public void onNavigationDrawerItemSelected(int position) {
     ...    
     if (position == 7) {
                CreaVotoFragment fragment = CreaVotoFragment.newInstance(position + 1);
                FragmentManager fragmentManager = getFragmentManager();
                fragmentManager.beginTransaction()
                        .replace(R.id.container, fragment)
                        .commit();
                //Mostra un Dialog che consente l'eliminazione di un corso
                fragment.createMark(this);
     }
     ...
 }

この場合、ユーザーは音声メニュー番号 7 を押したので、このブロック内で静的メソッド newIstance を使用して新しい Fragment を作成します。

これは方法です:

public static CreaVotoFragment newInstance(int sectionNumber) {
    CreaVotoFragment fragment = new CreaVotoFragment();
    Bundle args = new Bundle();
    args.putInt(ARG_SECTION_NUMBER, sectionNumber);
    fragment.setArguments(args);
    return fragment;
}

その後、メソッドにフラグメントを渡すだけです:replace.

それは機能し、クラス CreaVotoFragment でオーバーライドされた onCreateView メソッドを呼び出すこともわかります。

問題は、createMark メソッド (if ブロックの最後の行) で呼び出したときに始まります。
createMark メソッドの内部で、getView を呼び出すと、null ポインターが返されます。

4

1 に答える 1

2

commit()で実行されることに注意してくださいHandler.post()。つまり、フラグメントのビューは AFTER で作成されonNavigationDrawerItemSelectedます。

ビューのライフサイクルを制限するために、フラグメント内からビュー関連のメソッドを呼び出すとよいでしょう。

于 2014-11-19T21:08:40.683 に答える