好吧,我希望在Android中旋转屏幕时保存dialogFragment中包含的变量的值。我已经尝试过我能在互联网上找到的所有方法,而且没有一种方法可以帮助我。有些人杀了我的应用程序,有些人根本没有做任何事。
我需要一种真实有效的方法来保存在设备屏幕旋转时重置的EditText的值。 EditText位于DialogFragment中,将其转换为FragmentActivity。
非常感谢
答案 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自动保存到对话中,但这些方法将适用于依赖于这些对话的活动或片段。如果我可以通过代码修复它,将把解决方案放在这里。谢谢