0

私はActionBar Sherlock 4.2を使用しています。ユーザーがデバイスを回転させると、onPrepareOptionsMenu メソッドで null 参照を取得します。これは、Landscape モードの Dual Fragment Layout から、Detail Fragment なしで「マスター」フラグメントのみを表示する Protrait モードに戻すときに発生します。しかし、それでも私の詳細フラグメントが呼び出されます。最初に、menu.xml で何か間違ったことをしたと思いましたが、そうではありません。Activity は null が返されます。何が間違っているのか、誰にもヒントがありますか?

奇妙なことに、コードが isDetached() チェックに合格することもあります。

ヒントをいただければ幸いです、カイトサーファー

/*
 * (non-Javadoc)
 * 
 * @see android.support.v4.app.Fragment#onPrepareOptionsMenu(android.support. v4.view.Menu)
 */
@Override
public void onPrepareOptionsMenu(final Menu menu)
{
    if (getListAdapter() == null || getListAdapter().isEmpty() && isDetached())
    {
        return;
    }


    final MenuItem item = menu.findItem(R.id.forecast_options_navigate_to_spot);
    Log.d(LOG_TAG, "Menu item size:" + menu.size());
    Log.d(LOG_TAG, "Activity:" + getSherlockActivity());

出力:

11-11 13:07:46.862: D/MyFragment(27997): Menu item size:8
11-11 13:07:46.862: D/MyFragment(27997): Activity:null
4

1 に答える 1

0

だから、私は何が間違っているかを見つけました。私のPagerAdapterで、私は愚かなことをしました。

私の中で

public void onTabUnselected(final Tab tab, final FragmentTransaction nullTransaction)

別の Fragment を作成する getItem() への呼び出しを行いましたが、もちろんこのメソッドでデタッチされます。これにより、アクティビティが onPrepareOptionsMenu で null になります。

于 2012-11-13T17:21:30.213 に答える