【问题标题】:Android switching to layout-land [duplicate]Android切换到布局土地[重复]
【发布时间】:2016-07-02 15:22:59
【问题描述】:

我有 activity_main.xml 布局文件,并在“layout-land”目录中创建了横向布局文件。显然这两个文件具有相同的名称。

横向和主要布局效果很好,但是当我将手机移动到 swich 布局时,我所有的 textViews 和 editTextes 都会更改为默认值。

【问题讨论】:

标签: android android-layout android-studio android-orientation


【解决方案1】:

您必须将您的信息打包保存并在OnCreate() 期间恢复。

https://developer.android.com/training/basics/activity-lifecycle/recreating.html

【讨论】:

    【解决方案2】:

    每次您旋转手机时,都会发生配置更改并创建一个新的活动实例。这就是为什么您的 Textview 和 Edittext 设置为默认值的原因。但是,如果您的视图在 xml 中设置了 id,则在配置更改期间设置的值不会丢失。如果您不想设置 id,那么另一种方法是将您的 Textview 和 Edittext 值保存在 onSaveInstanceState 中并在 onRestoreInstanceState 中恢复它们。例如,要保存您的 textview 和 edittext 值,请遵循以下代码:

    @Override
    protected void onSaveInstanceState(Bundle outState) {
        super.onSaveInstanceState(outState);
        outState.putString("arg1", textview1.getText());
        outState.putString("arg2", edittext1.getText().toString());
        ......
    }
    

    要恢复保存的值,请遵循以下代码:

    @Override
    protected void onRestoreInstanceState(Bundle savedInstanceState) {
        super.onRestoreInstanceState(savedInstanceState);
        textview1.setText(savedInstanceState.getString("arg1"));
        edittext1.setText(savedInstanceState.getString("arg2"));
        ......
    }
    

    您可以在此处阅读更多信息:https://inthecheesefactory.com/blog/fragment-state-saving-best-practices/en

    【讨论】:

    • 我的 Textview 和 Edittext 在两个 xml 布局文件中都有 id,但它不起作用。我会尝试保存和恢复变量,感谢您的大力响应。
    • 抱歉,我没有提到 id 在两种布局(即纵向和横向)中应该是唯一且相同的。
    • 当然,我在每个视图的两种布局中都有相同的 ID,但是“唯一”ID 是什么意思?现在我有 main_layout 和 Landscape_layout ,它们是相同的文件。我知道我可以使用 Bundle 制作它,但我只是好奇我是否可以在没有 Bundle 的情况下制作它 :)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多