0

好吧,我想在 Android 中旋转屏幕时保存 dialogFragment 中包含的变量的值。我已经尝试了我在互联网上可以找到的所有方法,但没有一个对我有用。有些杀死了我的应用程序,而另一些则根本没有做任何事情。

我需要一种真实有效的方法来保存在设备屏幕旋转时重置的 EditText 的值。EditText 位于 DialogFragment 中,将其转换为 FragmentActivity。

非常感谢您

4

3 回答 3

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 回答
0

将片段的retaingInstance标志设置为true

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

这可以防止重新创建 Fragment 实例。

还要确保不要一直重新创建片段:

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();
    }

}

由于在 Activity 重新创建期间保留了 View 状态,并且您保留了相同的 Fragment 实例,因此您不需要一直保存 TextView 值。

于 2014-09-04T18:31:11.497 回答
0

我刚刚发现您不能将自动保存捆绑包的方法应用于对话,但这些方法将应用于这些对话相关的活动或片段。如果我可以通过代码修复它,将把解决方案放在这里。谢谢你

于 2014-09-05T12:43:49.593 回答