在我的列表视图和表单android中更改方向时丢失内容

时间:2014-12-29 14:09:01

标签: android-listview android-custom-view android-listfragment android-orientation orientation-changes

好的伙计们,我知道有几个主题具有相同的目的,但我是Android的新手,我发现的主题在我的脑海中创造了更多的混乱,所以这就是为什么我在这里;

我有一个带有5个活动的应用程序(片段)2个列表视图,3个是表单,我用我的2个表单中的内容填充列表视图;

问题是,当我改变我的方向时,我会松散所有人都知道的一切,但我不知道我需要设置一些配置,例如我在研究中找到的配置:我看到了很多实现这个的例子:

<activity android:name="com.abc.src.MainActivity" android:configChanges="keyboardHidden|orientation|screenSize" />

作为解决方案,但许多人说这还不够,在此之后我需要实现一个方法ex:

@Override public void onConfigurationChanged(Configuration newConfig) { super.onConfigurationChanged(newConfig); if(newConfig.orientation==Configuration.ORIENTATION_LANDSCAPE){ // set visibility visible of Layout in which your list fragment resides }else if(newConfig.orientation==Configuration.ORIENTATION_PORTRAIT){ // set visibility gone of Layout in which your list fragment resides } }

最后一个,哪个对我更有意义,但我不知道如何以及在何处实施:

public void onSaveInstanceState(Bundle savedInstanceState) {
savedInstanceState.putString("MyText", edtMyText.getText().toString());
}
 protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.my_activity);
    if (savedInstanceState != null) {
        String myString = savedInstanceState.getString("MyText");
        edtMyText.setText(myString);
}
}
@SuppressWarnings("unchecked") 
@Override 
protected void onRestoreInstanceState(Bundle savedInstanceState) {
super.onRestoreInstanceState(savedInstanceState);
???(what and where i need to set) ???
}

在我的表格案例中,最后一个对我更有意义,我可以获取我的sppiners和editTexts的值并将它们保存到字符串中,但我无法弄清楚如何保存列表中的项目这个例子的观点,

问题是,我理解上述方法的目的,但我不知道我需要在哪里实现,

我正在关注MVC模式,所以我想我需要在我的视图类中插入这些方法吗?

我的所有活动都只是调用我的片段,所以我需要在我的片段类或我的活动类中设置StateChange方法?

任何帮助或解决方案都会受到赞赏,所以如果你们需要我可以用我的班级代码更新我的帖子...谢谢

1 个答案:

答案 0 :(得分:0)

不要覆盖任何配置更改。 Android会为您处理它,特别是涉及Views时。只有在最具体(不常见)的边缘情况下,才应覆盖配置更改。删除您发布的所有内容您会发现所有Views都会相应地重新创建,以便在EditText窗口小部件中包含该文本。如果没有,那么问题出在其他地方。