4

getArguments() は null を返します!

活動中のコード:

if (savedInstanceState == null) {
            // During initial setup, plug in the details fragment.
            FlightListFragment listFragment = 
                     FlightListFragment.newInstance(mSearchParams);
            getSupportFragmentManager().beginTransaction().add(
                    android.R.id.content, listFragment).commit();
 }  

断片的に:

@Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle 
                    savedInstanceState) {
        mSearchParams = 
               getArguments().getParcelable(SearchResultsActivity.EXTRA_SEARCH_PARAMS);
        return super.onCreateView(inflater, container, savedInstanceState);
    }

と:

public static FlightListFragment newInstance(SearchParams sp) {
    FlightListFragment f = new FlightListFragment();
    Bundle b = new Bundle();
    b.putParcelable(SearchResultsActivity.EXTRA_SEARCH_PARAMS, sp);
    f.setArguments(b);
    return f;
}

しかし、私は常にここで NullPointerException を取得します: getArguments()。
私が間違っていることを説明してください。
ありがとう!

編集:
newInstance() メソッドが onCreateView の後に呼び出されることがわかったので、コードをそこから onCreate に移動しましたが、問題は回避されませんでした。

4

1 に答える 1

10

フラグメントがインスタンス化されたときに引数が指定されなかったことを意味します...

このようなことを行うことで、引数が提供されたかどうかを確認できます...

Bundle arguments = getArguments();
if (arguments != null)
{
    // then you have arguments
} else {
    // no arguments supplied...
}

OK - 私はあなたの質問を読み違えました...

putParcelable を実行している時点で sp は null ですか?

于 2012-09-20T21:54:38.407 に答える