0

アクティビティでフラグメント (ListFragment) を使用し、選択したアイテムを保存して、画面が回転したときに復元します。

@Override
    public void onSaveInstanceState(Bundle outState) {
        super.onSaveInstanceState(outState);
        outState.putInt("currentListIndex", mCurrentSelectedItemIndex);
    }

ユーザーが「戻る」をクリックしたときに、アイテムの選択を保存したくありません。戻るボタンをオーバーライドし、アクティビティに渡されたバンドル インスタンスをクリアする必要があります。

バンドル インスタンスを取得する方法がよくわかりません。グローバル変数を使用しようとしましたが、使用すると NullPointerException が発生します。

これが私がする方法です:

private Bundle bundle;

@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
    if (keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount() == 0) {
        bundle.clear();
    } 

    return super.onKeyDown(keyCode, event);
}

必要な情報 (currentListIndex) はどこで取得できますか: アクティビティの onCreate() / 詳細フラグメントの onCreateView() で?

4

1 に答える 1

0

わかりました私は解決策を見つけました。

ListFragment を拡張する私のクラスでは:

// Restore last state for checked position (when screen orientation
        // change or activity resumed)
        if (savedInstanceState != null) {
            mCurrentSelectedItemIndex = savedInstanceState.getInt(
                    "currentListIndex", -1);
        }

私の活動では:

@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
    AccountBDD accountBdd = application.getAccountBdd();
    if (keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount() == 0) {
        mCurrentSelectedItemIndex = -1;
    }
    return super.onKeyDown(keyCode, event);
}

そしてそれは動作します

于 2012-08-20T09:01:11.303 に答える