Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/184.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 在方向更改时维护动态设置视图标记_Android_Android View_Android Orientation - Fatal编程技术网

Android 在方向更改时维护动态设置视图标记

Android 在方向更改时维护动态设置视图标记,android,android-view,android-orientation,Android,Android View,Android Orientation,当我使用setTag动态设置视图的标记时,它在方向更改后不会保留。对两个相关问题的回答这两个答案尤其是-&似乎表明标记在方向更改上保持,如果视图存储在标记中,则内存泄漏意味着它在应该时未被释放-即方向更改。除了实际实现自己的方法外,还有什么方法可以在方向更改后保留视图标记 我已经完成了一个简单的示例,其中标记在方向更改时未保存。第一个按钮用于设置第二个按钮的标签。第二个按钮在单击时显示其当前标记。更改方向时,标记始终为空: 入职前: 职位介绍: 我认为标签并不是你真正想要的。考虑使用和保存在活

当我使用setTag动态设置视图的标记时,它在方向更改后不会保留。对两个相关问题的回答这两个答案尤其是-&似乎表明标记在方向更改上保持,如果视图存储在标记中,则内存泄漏意味着它在应该时未被释放-即方向更改。除了实际实现自己的方法外,还有什么方法可以在方向更改后保留视图标记

我已经完成了一个简单的示例,其中标记在方向更改时未保存。第一个按钮用于设置第二个按钮的标签。第二个按钮在单击时显示其当前标记。更改方向时,标记始终为空:

入职前:

职位介绍:

我认为标签并不是你真正想要的。考虑使用和保存在活动被破坏和重新创建时需要保存的任何数据。
@Override
public void onSaveInstanceState(Bundle outState) {
    super.onSaveInstanceState(savedInstanceState);
    savedInstanceState.putString("tag", message);
}

@Override
public void onRestoreInstanceState(Bundle savedInstanceState) {
    super.onRestoreInstanceState(state);
    message = state.getString("tag");
}
<?xml version="1.0" encoding="utf-8"?>

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <Button
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/set_tag"
        android:text="Set Tag"
        android:freezesText="true"/>

    <Button
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/display_tag"
        android:text="Display Tag"
        android:freezesText="true"/>
</LinearLayout>
@Override
public void onSaveInstanceState(Bundle outState) {
    super.onSaveInstanceState(savedInstanceState);
    savedInstanceState.putString("tag", message);
}

@Override
public void onRestoreInstanceState(Bundle savedInstanceState) {
    super.onRestoreInstanceState(state);
    message = state.getString("tag");
}