在重新处理活动时恢复按钮文本和可见性

时间:2015-10-13 00:28:46

标签: android android-activity

我的应用程序使用一个活动和多个片段,扩展AppCompatActivity的活动会扩展一个xml文件,该文件中包含一个LinearLayout 其他ViewGroups,这个LinearLayout的目的是保持3个按钮,并非所有按钮在开始时都可见。

在代码中,我更改了LinearLayout和的视图 一些按钮的视图和文本取决于当前片段中采取的操作。然而,当他们的状态不维持时 按下主页按键后,活动将被重新处理。 每次在SharedPreferences中获取时,保存每个按钮的可见性和文本都太麻烦,所以我尝试了下面的代码但是失败了。

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

    if (mMainButtons_LL != null) {
            mMainButtons_LL = (LinearLayout) savedInstanceState.getSerializable("mainButtons");
        } else {
            mMainButtons_LL = (LinearLayout) findViewById(R.id.main_buttons_LL);
        }
    }
}

@Override
protected void onSaveInstanceState(Bundle outState) {
    super.onSaveInstanceState(outState);
    outState.putSerializable("mainButtons", (Serializable) mMainButtons_LL);

}

1 个答案:

答案 0 :(得分:0)

将您的代码更改为以下内容:

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.id.your_layout); // << replace your layout id here
    mMainButtons_LL = (LinearLayout) findViewById(R.id.main_buttons_LL);

    if (savedInstanceState != null) {
        mMainButtons_LL.setVisibility(savedInstanceState.getInt("visibility"));
        mMainButtons_LL.setText(savedInstanceState.getString("text");
    }
}

@Override
protected void onSaveInstanceState(Bundle outState) {
    super.onSaveInstanceState(outState);
    outState.putInt("visibility", mMainButtons_LL.getVisibility());
    outState.putString("text", mMainButtons_LL.getText.toString());
}