屏幕旋转时,在DialogFragment中保存变量的值

时间:2014-09-04 17:27:41

标签: android rotation fragment screen dialogfragment

好吧,我希望在Android中旋转屏幕时保存dialogFragment中包含的变量的值。我已经尝试过我能在互联网上找到的所有方法,而且没有一种方法可以帮助我。有些人杀了我的应用程序,有些人根本没有做任何事。

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

非常感谢

3 个答案:

答案 0 :(得分: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>

答案 1 :(得分: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值。

答案 2 :(得分:0)

我刚刚发现你无法应用方法将bundle自动保存到对话中,但这些方法将适用于依赖于这些对话的活动或片段。如果我可以通过代码修复它,将把解决方案放在这里。谢谢