好吧,我想在 Android 中旋转屏幕时保存 dialogFragment 中包含的变量的值。我已经尝试了我在互联网上可以找到的所有方法,但没有一个对我有用。有些杀死了我的应用程序,而另一些则根本没有做任何事情。
我需要一种真实有效的方法来保存在设备屏幕旋转时重置的 EditText 的值。EditText 位于 DialogFragment 中,将其转换为 FragmentActivity。
非常感谢您
好吧,我想在 Android 中旋转屏幕时保存 dialogFragment 中包含的变量的值。我已经尝试了我在互联网上可以找到的所有方法,但没有一个对我有用。有些杀死了我的应用程序,而另一些则根本没有做任何事情。
我需要一种真实有效的方法来保存在设备屏幕旋转时重置的 EditText 的值。EditText 位于 DialogFragment 中,将其转换为 FragmentActivity。
非常感谢您
我不知道我是否理解您的问题,但您可以按如下方式捕获轮换:
@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>
将片段的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 值。
我刚刚发现您不能将自动保存捆绑包的方法应用于对话,但这些方法将应用于这些对话相关的活动或片段。如果我可以通过代码修复它,将把解决方案放在这里。谢谢你