0

さて、Androidで画面回転時にdialogFragmentに含まれる変数の値を保存したいと思いました。インターネットで見つけられるすべての方法を試しましたが、どれもうまくいきませんでした。私のアプリケーションを強制終了する人もいれば、何もしない人もいます。

デバイス画面が回転したときにリセットされる EditText の値を保存するための実際的かつ効果的な方法が必要です。EditText は DialogFragment にあり、これを FragmentActivity に変換します。

どうもありがとうございます

4

3 に答える 3

0

バンドルを自動的にダイアログに保存する方法を適用できないことがわかりましたが、これらはこれらのダイアログに依存するアクティビティまたはフラグメントに適用されます。コードで修正できる場合は、ここに解決策を記載します。ありがとうございました

于 2014-09-05T12:43:49.593 に答える
0

フラグメントのretaingInstanceフラグをtrue次のように設定します。

http://developer.android.com/reference/android/app/Fragment.html#setRetainInstance(boolean)

これにより、フラグメント インスタンスが再作成されなくなります。

また、常にフラグメントを再作成しないようにしてください。

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main_activity);

    if (savedInstanceState == null) {
        Fragment f = new Myfragment();
        f.setRetainInstance(true);
        getSupportFragmentManager().beginTransaction()
            .add(R.id.container, f))
            .commit();
    }

}

ビューの状態はアクティビティの再作成中に保持され、同じ Fragment インスタンスを保持しているため、常に TextView の値を保存する必要はありません。

于 2014-09-04T18:31:11.497 に答える
0

あなたの質問を理解できたかどうかわかりませんが、次のようにローテーションをキャプチャできます。

@Override
    public void onConfigurationChanged(Configuration newConfig) {
        super.onConfigurationChanged(newConfig);
        if (newConfig.orientation == Configuration.ORIENTATION_PORTRAIT)
        {
            //save value
        }
         if (newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE)
        {
            //save value
        } 
    }

アクティビティが再開されないようにする場合は、これをマニフェスト ファイルに追加する必要があります。

<activity
            .....
            android:configChanges="keyboardHidden|orientation|screenSize"
            ..... >
 </activity>
于 2014-09-04T17:40:58.393 に答える