如何使用注释保存片段状态?

时间:2017-10-31 17:47:55

标签: android android-fragments annotations onsaveinstancestate onrestoreinstancestate

我有一个小项目,一个活动和两个片段。我从一个新项目的“底部导航活动”样本开始。

我使用Android Annotations(JAX-RS API JavaDoc)来注入我的片段,它正确显示但是当我旋转时,我放弃了所有信息,应用程序显示第一个片段,即使我显示了第二个片段。我尝试使用Bundle对象的编辑文本在“onSaveInstanceState”方法中保存我的数据,我在“onActivityCreated”或“onCreate”方法中返回它,但在他们的方法被重新调用之后我的数据desappear。

我不知道如何保存显示的片段以及如何使用android注释重新显示它。

在我的Activity类中,我有这些方法:

@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"));
        }

    }

所以我的问题是如何保存我的片段及其数据和显示的片段?

1 个答案:

答案 0 :(得分:0)

我终于找到了我的错误。在我的主要活动中,我有以下方法:

@Override
protected void onCreate(Bundle savedInstanceState) {
       super.onCreate(savedInstanceState);
       setContentView(R.layout.activity_main);
}

因此程序通过注入调用视图并使用setContentView再次调用它。所以我更新了这样的方法:

@Override
protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
}