java - 当 Activity 被破坏时保存切换按钮的值,并在 Activity 再次启动时将它们放回原处

标签 java android save toggle onsaveinstancestate

enter image description here美好的一天,我想在应用程序退出时保存切换按钮的值,并在用户再次启动应用程序时将它们放回去。我尝试过使用 onSaveInstanceState 但它不起作用。任何帮助,将不胜感激。谢谢。

编辑:我也尝试过使用首选项。 编辑:我也尝试过使用首选项。 编辑:我也尝试过使用首选项。 编辑:我也尝试过使用首选项。 编辑:我也尝试过使用首选项。 编辑:我也尝试过使用首选项。


    @Override
    protected void onSaveInstanceState(Bundle savedInstanceState) {
        super.onSaveInstanceState(savedInstanceState);
        savedInstanceState.putBoolean("white", white.isChecked());
        savedInstanceState.putBoolean("yellow", yellow.isChecked());
        savedInstanceState.putBoolean("orange", orange.isChecked());
        savedInstanceState.putBoolean("red", red.isChecked());
        savedInstanceState.putBoolean("blue", blue.isChecked());
        savedInstanceState.putInt("whiteI", whiteI.getVisibility());
        savedInstanceState.putInt("yellowI", yellowI.getVisibility());
        savedInstanceState.putInt("orangeI", orangeI.getVisibility());
        savedInstanceState.putInt("redI", redI.getVisibility());
        savedInstanceState.putInt("blueI", blueI.getVisibility());

    }

    @Override
    protected void onRestoreInstanceState(Bundle savedInstanceState) {
        super.onRestoreInstanceState(savedInstanceState);
        white.setChecked(savedInstanceState.getBoolean("white"));
        yellow.setChecked(savedInstanceState.getBoolean("yellow"));
        orange.setChecked(savedInstanceState.getBoolean("orange"));
        red.setChecked(savedInstanceState.getBoolean("red"));
        blue.setChecked(savedInstanceState.getBoolean("blue"));

        whiteI.setVisibility(savedInstanceState.getInt("whiteI"));
        yellowI.setVisibility(savedInstanceState.getInt("yellowI"));
        orangeI.setVisibility(savedInstanceState.getInt("orangeI"));
        redI.setVisibility(savedInstanceState.getInt("redI"));
        blueI.setVisibility(savedInstanceState.getInt("blueI"));


    }

    @Override
    protected void onPause() {
        super.onPause();
        SharedPreferences.Editor editPreferences = preferences.edit();
        editPreferences.putBoolean("white", white.isChecked());
        editPreferences.putBoolean("yellow", yellow.isChecked());
        editPreferences.putBoolean("orange", orange.isChecked());
        editPreferences.putBoolean("red", red.isChecked());
        editPreferences.putBoolean("blue", blue.isChecked());
        editPreferences.putInt("whiteI", whiteI.getVisibility());
        editPreferences.putInt("yellowI", yellowI.getVisibility());
        editPreferences.putInt("orangeI", orangeI.getVisibility());
        editPreferences.putInt("redI", redI.getVisibility());
        editPreferences.putInt("blueI", blueI.getVisibility());
        editPreferences.commit();

    }

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        if (savedInstanceState == null) Toast.makeText(this, "null", Toast.LENGTH_SHORT).show();
        setContentView(R.layout.activity_main);
        background = findViewById(R.id.imageViewBg);
        yellow = findViewById(R.id.tgBtnAlarm);
        orange = findViewById(R.id.tgBtnAlert);
        red = findViewById(R.id.tgBtnCritical);
        blue = findViewById(R.id.tgBtnRecession);
        white = findViewById(R.id.tgBtnNormal);

        yellowI = findViewById(R.id.imageViewYellow);
        redI = findViewById(R.id.imageViewRed);
        blueI = findViewById(R.id.imageViewBlue);
        orangeI = findViewById(R.id.imageViewOrange);
        whiteI = findViewById(R.id.imageViewWhite);

        btnExit = findViewById(R.id.btnExit);

        preferences = getSharedPreferences("pref",MODE_PRIVATE);
        white.setChecked(preferences.getBoolean("white"));
        yellow.setChecked(preferences.getBoolean("yellow"));
        orange.setChecked(preferences.getBoolean("orange"));
        red.setChecked(preferences.getBoolean("red"));
        blue.setChecked(preferences.getBoolean("blue"));
        whiteI.setVisibility(preferences.getInt("whiteI"));
        yellowI.setVisibility(preferences.getInt("yellowI"));
        orangeI.setVisibility(preferences.getInt("orangeI"));
        redI.setVisibility(preferences.getInt("redI"));
        blueI.setVisibility(preferences.getInt("blueI"));

        glide();
        allow();
        volume();

        btnExit.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
               finish();
            }
        });


    }

最佳答案

尝试使用SharedPreferences

SharedPreferences savePreferences = getSharedPreferences("pref",MODE_PRIVATE);
SharedPreferences.Editor editPreferences = savePreferences.edit();
editPreferences.putBoolean("white", white.isChecked());
editPreferences.putBoolean("yellow", yellow.isChecked());
editPreferences.putBoolean("orange", orange.isChecked());
editPreferences.putBoolean("red", red.isChecked());
editPreferences.putBoolean("blue", blue.isChecked());
editPreferences.putInt("whiteI", whiteI.getVisibility());
editPreferences.putInt("yellowI", yellowI.getVisibility());
editPreferences.putInt("orangeI", orangeI.getVisibility());
editPreferences.putInt("redI", redI.getVisibility());
editPreferences.putInt("blueI", blueI.getVisibility());
editPreferences.commit();

检索数据

    white.setChecked(savePreferences.getBoolean("white"));
    yellow.setChecked(savePreferences.getBoolean("yellow"));
    orange.setChecked(savePreferences.getBoolean("orange"));         
    red.setChecked(savePreferences.getBoolean("red"));
    blue.setChecked(savePreferences.getBoolean("blue"));    
    whiteI.setVisibility(savePreferences.getInt("whiteI"));
    yellowI.setVisibility(savePreferences.getInt("yellowI"));
    orangeI.setVisibility(savePreferences.getInt("orangeI"));
    redI.setVisibility(savePreferences.getInt("redI"));
    blueI.setVisibility(savePreferences.getInt("blueI"));

关于java - 当 Activity 被破坏时保存切换按钮的值,并在 Activity 再次启动时将它们放回原处,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59797963/

相关文章:

java - 如何防止 Ivy 下载同一依赖项的多个版本?

java - 将项目添加到 Java 构建路径

android - 将 json 文件保存到内部存储器

swift - 测验应用程序 : Saving selected quiz-questions using NSUserDefaults and displaying it in another view controller

java - ArrayList 构造器

java - 二维数组(参差不齐)- 打印每列总和

java - 您如何使用适用于 Java 的 Google Translate v2 API Client Library 发出翻译请求?

android - android中的网络检查功能?

android - 我的应用程序使用 AccessibilityManager 未处理事件随机崩溃设备(Galaxy Nexus 和 Nexus 4)

r - 使用 ggsave/sprintf 出现奇怪的错误消息