2

私は Android 開発に不慣れで、遊んでいるのは、次のようなアプリ フローを持つスポーツ タイプのアプリです: リーグ -> チーム -> プレーヤー -> プレーヤーの統計 (これは ViewPager にあります)。すべてフラグメントを使用しています。

フローはこの方向に機能していますが、ホームボタンを使用してスタックを上に移動しようとしています (戻るボタンも機能します)。私の問題は、フローを進めて、リーグ、チーム、プレーヤーなどの ID を渡すことです...しかし、ホームボタンを押すと、このデータは利用できなくなります。

keepInstance を true に設定しようとしましたが、うまくいきません。理由はわかりませんが、戻るボタンまたはホーム ボタンを押すたびに、onCreate の ID フィールドがすべて null になります。

また、onSaveInstance と onActivityCreated をオーバーライドして、バンドル内の各エンティティの ID を配置しようとしましたが、onSaveInstance のバンドルに ID を保存しても、onActivityCreated のバンドルは null です。

ユーザーが戻るボタンまたはホーム ボタンを押したときに、各エンティティの ID を保持するにはどうすればよいですか?

助けてくれてありがとう。

4

2 に答える 2

2

設定アクティビティを追加すると、同様の問題が発生しました。自動的に作成された onMenuItemSelected を変更する必要がありました。

@Override
public boolean onMenuItemSelected(int featureId, MenuItem item) {
    int id = item.getItemId();
    if (id == android.R.id.home) {
        if (!super.onMenuItemSelected(featureId, item)) {
            // I removed this line
            //NavUtils.navigateUpFromSameTask(this);
            // and add this 3 lines
            Intent intent = NavUtils.getParentActivityIntent(this);
            intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
            NavUtils.navigateUpTo(this, intent);
        }
        return true;
    }
    return super.onMenuItemSelected(featureId, item);
}
于 2016-07-13T18:55:28.490 に答える
0

navigateUpFromSameTask() は FLAG_ACTIVITY_CLEAR_TOP フラグを設定するだけではありません。また、savedInstanceState もクリアします。SharedPreferences の saveInstanceState で正常に動作する値を保存することで、この問題を解決しました。それらを onPause() に格納し、onResume() で復元します。

于 2013-11-22T18:28:30.023 に答える