首页 > 解决方案 > 如何在片段中按钮的可见性上使用 onSaveInstanceState?

问题描述

在我的片段中,每当我单击它时,我的按钮都会将其可见性更改为 GONE。当我旋转屏幕时,我希望能见度保持消失。我正在使用 onSaveInstanceState,但我想为 outState 添加什么帮助。

任何帮助将不胜感激,谢谢!

public class PlaylistsFragment extends Fragment {

    private Button add1;



    @Nullable
    @Override

    public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        return inflater.inflate(R.layout.fragment_playlists, container, false);
    }

    @Override
    public void onSaveInstanceState(@NonNull Bundle outState) {
        super.onSaveInstanceState(outState);
        outState.
    }


    @Override
    public void onViewCreated(final View view, @Nullable final Bundle savedInstanceState) {
        final Button add1 = (Button) getView().findViewById(R.id.p_add1);

        add1.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                add1.setVisibility(View.GONE);

            }
        });
    }
}

标签: androidandroid-studio

解决方案


尝试这个:

@Override
public void onSaveInstanceState(Bundle savedInstanceState) {
  super.onSaveInstanceState(savedInstanceState);
  // Save UI state changes to the savedInstanceState.
  savedInstanceState.putInt("button_visibility", add1.getVisibility());
}

@Override
public void onRestoreInstanceState(Bundle savedInstanceState) {
  super.onRestoreInstanceState(savedInstanceState);
  // Restore UI state from the savedInstanceState.
 myButtonVisibility = savedInstanceState.getInt("button_visibility", 0);
}

例如在 onCreate 中:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    add1 = (Button)findViewById(R.id.p_add1);

    if (savedInstanceState != null) {
        int buttonVisibility = savedInstanceState.getInt("button_visibility", 0);
        // here will IDE complaint about setting only integer
        add1.setVisibility(buttonVisibility == View.VISIBLE ? View.VISIBLE : View.GONE)
    }
}

如果您有更多问题,您绝对应该查看本教程: saveInstanceState 教程

享受。


推荐阅读