我有片段女巫包含按钮。这是布局:
<LinearLayout
android:id="@+id/filters_container"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<Button
android:id="@+id/button_open_filters"
style="@style/no_elevation"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="0.76"
android:background="@drawable/selector_button_search_menu"
android:clickable="true"
android:gravity="start|center_vertical"
android:paddingBottom="@dimen/tv_padding_top_search_menu"
android:paddingLeft="@dimen/et_padding_left"
android:paddingRight="@dimen/et_padding_left"
android:paddingTop="@dimen/tv_padding_top_search_menu"
android:text="@string/button_searchname_all"
android:textColor="@color/dark_white_pressed_selector" />
<ImageButton
android:id="@+id/button_filter"
style="@style/no_elevation"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="0.12"
android:background="@drawable/selector_button_search_menu"
android:paddingBottom="@dimen/tv_padding_top_search_menu"
android:paddingTop="@dimen/tv_padding_top_search_menu"
android:src="@drawable/bg_button_filters" />
<ImageButton
android:id="@+id/button_clear_filter"
style="@style/no_elevation"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="0.12"
android:background="@drawable/selector_button_search_menu"
android:paddingBottom="@dimen/tv_padding_top_search_menu"
android:paddingTop="@dimen/tv_padding_top_search_menu"
android:src="@drawable/selector_button_reset_filters"
android:visibility="gone" />
</LinearLayout>
因此button_open_filters
动态更改文字。在片段中我有:
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_search, container, false);
if(savedInstanceState != null) {
//some code
} else {
//restore prevous state
}
return view;
}
但是在调试模式下,我看到savedInstanceState
没有按钮状态:
机器人:view_state = {2131624078=android.view.AbsSavedState$1@4191c450}
所以我的问题是我做错了什么? Android不保存状态按钮,例如我也有Textview
状态已保存并由Android正确恢复。我在片段中实现了onSaveInstance
。
答案 0 :(得分:0)
您可以在Fragment中使用这些方法。
@Override
public void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
outState.putBoolean("BUTTON_TEXT", "Press Me");
}
@Override
public void onActivityCreated(@Nullable Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
if(savedInstanceState != null) {
String btnText = savedInstanceState.getString("BUTTON_TEXT");
btn.setText("" + btnText);
}
}