如何使用注释保存片段状态?
How to save fragment state with annotations?
我有一个小项目,一个 activity 和两个片段。我从一个新项目的 "Bottom Navigation Activity" 示例开始。
我使用 Android 注释 (https://github.com/androidannotations/androidannotations/wiki) 来注入我的片段,它显示正确但是当我旋转时,我丢失了我的所有信息并且应用程序显示第一个片段,即使我展示了第二个。我试图从带有 Bundle 对象的编辑文本中保存我的数据,在 "onSaveInstanceState" 方法中,我在 "onActivityCreated" 或 "onCreate" 方法中取回它,但在他们的方法被删除之后重新调用,我的数据消失了。
我不知道如何保存显示的片段以及如何使用 android 注释重新显示它。
在我的 Activity class 我有那些方法 :
@Override
protected void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
}
@Override
protected void onRestoreInstanceState(Bundle savedInstanceState) {
super.onRestoreInstanceState(savedInstanceState);
}
在我的主要片段中:
@Override
public void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
if(dpdEditText != null){
rttNumberTemp = rttEditText.getText().toString();
outState.putString("rttNumberTemp", rttNumberTemp);
}
}
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
Log.d(Tag, "onActivityCreated");
if(savedInstanceState != null){
Log.d(Tag, "onActivityCreated if");
updateEditText(rttEditText,savedInstanceState.getString("rttNumberTemp"));
}
}
所以我的问题是如何保存我的片段及其数据以及显示哪个片段?
我终于找到了我的错误。在我的主要 activity 中,我有以下方法:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
于是程序通过注入的方式调用了view,然后用setContentView再次调用。所以我更新了这样的方法:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
我有一个小项目,一个 activity 和两个片段。我从一个新项目的 "Bottom Navigation Activity" 示例开始。
我使用 Android 注释 (https://github.com/androidannotations/androidannotations/wiki) 来注入我的片段,它显示正确但是当我旋转时,我丢失了我的所有信息并且应用程序显示第一个片段,即使我展示了第二个。我试图从带有 Bundle 对象的编辑文本中保存我的数据,在 "onSaveInstanceState" 方法中,我在 "onActivityCreated" 或 "onCreate" 方法中取回它,但在他们的方法被删除之后重新调用,我的数据消失了。
我不知道如何保存显示的片段以及如何使用 android 注释重新显示它。
在我的 Activity class 我有那些方法 :
@Override
protected void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
}
@Override
protected void onRestoreInstanceState(Bundle savedInstanceState) {
super.onRestoreInstanceState(savedInstanceState);
}
在我的主要片段中:
@Override
public void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
if(dpdEditText != null){
rttNumberTemp = rttEditText.getText().toString();
outState.putString("rttNumberTemp", rttNumberTemp);
}
}
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
Log.d(Tag, "onActivityCreated");
if(savedInstanceState != null){
Log.d(Tag, "onActivityCreated if");
updateEditText(rttEditText,savedInstanceState.getString("rttNumberTemp"));
}
}
所以我的问题是如何保存我的片段及其数据以及显示哪个片段?
我终于找到了我的错误。在我的主要 activity 中,我有以下方法:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
于是程序通过注入的方式调用了view,然后用setContentView再次调用。所以我更新了这样的方法:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}