【问题标题】:How to keep information when I change layout android studioandroid studio 更改布局时如何保留信息
【发布时间】:2021-09-29 10:28:08
【问题描述】:

假设我的 Android 应用有一个 activity_main.xml 和一个 second_layout.xml。 其中每个都有一个按钮和一个editText。

按钮允许我更改布局。 任何时候我从一个布局切换到另一个,ediTexts 的内容都会被删除。 谁能告诉我怎么保存?

我尝试使用 onSaveInstanceState(Bundle outState)onRestoreInstanceState(Bundle outState) 的方法,但它不起作用。

这是我的部分代码:

    editTextSingleLW = (EditText) findViewById(R.id.editTextSingleLW);
    String single_LW;

    @Override
    public void onSaveInstanceState(Bundle outState) {
        outState.putString("Single_LW",singleLW);

        super.onSaveInstanceState(outState);
    }

    @Override
    public void onRestoreInstanceState(Bundle outState){
        super.onRestoreInstanceState(outState);

        editTextSingleLW.setText(outState.getString("Single_LW")+"");
    } 

有什么想法吗?

非常感谢。

【问题讨论】:

    标签: java android android-studio android-layout instance


    【解决方案1】:

    而不是使用覆盖 onRestoreInstanceStateonCreate(Bundle savedInstanceState) 中使用相同的恢复代码,使用其 savedInstanceState 参数。最好的方法是实现共享方法来恢复数据并在onCreateonRestoreInstanceState中调用它(记得检查ifBundlenull,就像Activity的第一次开始一样onCreate)

    【讨论】:

    • 我试过你说的但还是不行。实际上,当我切换布局(我调试它)时,它并没有进入 onCreate 方法。我用来改变布局的方法是:setContentView(R.layout.second_layout);setContentView(R.layout.activity_main);
    • 这个布局怎么切换?
    • setContentView(R.layout.second_layout);setContentView(R.layout.activity_main);
    • 在每个 setContentView 调用之前将数据(例如来自EditText 的文本)存储在某个局部变量中,在调用之后再次使用findViewById 引用当前EditText,然后为其设置文本。通过setContentView 更改布局不会使Activity 重新创建,因此此处不会发生保存实例,Activity 仍处于恢复状态
    • 它似乎工作。基本上任何时候我打电话给setContentView 我也必须打电话给findViewById。我希望有一个更方便的方法。反正比你好
    猜你喜欢
    • 1970-01-01
    • 2011-08-18
    • 1970-01-01
    • 1970-01-01
    • 2022-07-20
    • 1970-01-01
    • 2017-08-28
    • 2018-05-20
    • 1970-01-01
    相关资源
    最近更新 更多