如何保存广播组的状态?

问题描述 投票:-1回答:1

我希望用户在关闭应用程序之前检查他之前检查过的相同单选按钮。

这是我的源代码

package com.example.myapplication;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.RadioButton;
import android.widget.RadioGroup;
import android.widget.TextView;
import android.widget.Toast;

import com.example.myapplication.R;

public class MainActivity extends AppCompatActivity {

    RadioGroup radioGroup;
    RadioButton radioButton;
    TextView textView;

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

        radioGroup = findViewById(R.id.radioGroup);
        textView = findViewById(R.id.text_view_selected);

        Button buttonApply = findViewById(R.id.button_apply);
        buttonApply.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                int radioId = radioGroup.getCheckedRadioButtonId();

                radioButton = findViewById(radioId);

                textView.setText("Your choice: " + radioButton.getText());
            }
        });
    }

    public void checkButton(View v) {
        int radioId = radioGroup.getCheckedRadioButtonId();

        radioButton = findViewById(radioId);

        Toast.makeText(this, "Selected Radio Button: " + radioButton.getText(),
                Toast.LENGTH_SHORT).show();

    }
}

我希望下次使用应用程序时保存单选按钮状态。

java android android-radiogroup
1个回答
0
投票

你应该看看sharedPreferenceshttps://developer.android.com/training/data-storage/shared-preferences

保存您的数据:

SharedPreferences sharedPref = getActivity().getPreferences(Context.MODE_PRIVATE);
SharedPreferences.Editor editor = sharedPref.edit();
editor.putString("myRadio", radioButton.getText());
editor.commit();

检索数据:

SharedPreferences sharedPref = getActivity().getPreferences(Context.MODE_PRIVATE);
String defaultValue = "";
String radioButtonText = sharedPref.getString("myRadio", defaultValue);

现在,你可以这样做:

public class MainActivity extends AppCompatActivity {

   RadioGroup radioGroup;
   RadioButton radioButton;
   TextView textView;
   // Declare SharedPreferences as attributes
   private SharedPreferences sharedPref;
   private SharedPreferences.Editor editor;

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

        radioGroup = findViewById(R.id.radioGroup);
        textView = findViewById(R.id.text_view_selected);
        // Retrieve SharedPreferences 
        sharedPref = getActivity().getPreferences(Context.MODE_PRIVATE);
        editor = sharedPref.edit();

        Button buttonApply = findViewById(R.id.button_apply);
        buttonApply.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                int radioId = radioGroup.getCheckedRadioButtonId();

                radioButton = findViewById(radioId);

                textView.setText("Your choice: " + radioButton.getText());
            }
        });
    }

   @Override
   protected void onResume() {
       int radioIdChecked = -1;
       radioIdChecked = sharedPref.getInt("myRadioChecked", radioIdChecked);
       if (radioIdChecked == -1) {
           // ERROR, don't check anything
           Log.d("TAG", "error: don't check anything");
       }
       else {
           RadioButton radioButton = radioGroup.findViewById(radioIdChecked);
           if (radioButton != null) {
               radioButton.setChecked(true);
           }
       }
    }

   @Override
   protected void onPause() {
        editor.putInt("myRadioChecked", radioGroup.getCheckedRadioButtonId());
        editor.commit();
   }

最好

© www.soinside.com 2019 - 2024. All rights reserved.