恢复片段中的按钮文本

时间:2015-05-21 11:12:51

标签: android android-layout android-fragments

我有片段女巫包含按钮。这是布局:

<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

1 个答案:

答案 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);
    }
}