Android / SharedPreferences:尽管应用程序被终止,但仍选中RadioButton

时间:2019-05-15 08:51:31

标签: java android sharedpreferences

我对SharedPreferences有问题。尽管应用被杀死,但EditText中的文本仍将保留。但是,对于RadioButton,当应用被杀死时,无法保持其位置检查。如果我单击另一个活动的下一个按钮,然后再次单击另一个活动的此活动,则选中的RadioButton仅在其位置保持选中状态。下面是我的代码:

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

    if(getIntent() != null) {
        approveID = getIntent().getStringExtra("approveType");

    }
    else{

    }

    final ActionBar abar = getSupportActionBar();
    View viewActionBar = getLayoutInflater().inflate(R.layout.activity_new_suggestion, null);
    ActionBar.LayoutParams params = new ActionBar.LayoutParams(
            ActionBar.LayoutParams.WRAP_CONTENT,
            ActionBar.LayoutParams.MATCH_PARENT,
            Gravity.CENTER);
    TextView tvTitle = viewActionBar.findViewById(R.id.title);
    tvTitle.setText("NEW SUGGESTION");
    abar.setCustomView(viewActionBar, params);
    abar.setDisplayShowCustomEnabled(true);
    abar.setDisplayShowTitleEnabled(false);
    //abar.setDisplayHomeAsUpEnabled(true);
    abar.setHomeButtonEnabled(true);

    final SharedPreferences sharedPref = getSharedPreferences("MyData", MODE_PRIVATE);
    etTitle = findViewById(R.id.etTitle);
    etTitle.setText(sharedPref.getString("title", ""));
    etTitle.addTextChangedListener(new TextWatcher() {
        @Override
        public void onTextChanged(CharSequence s, int start, int before, int count)
        {
        }

        @Override
        public void beforeTextChanged(CharSequence s, int start, int count, int after)
        {
        }

        @Override
        public void afterTextChanged(Editable s)
        {
            sharedPref.edit().putString("title", s.toString()).apply();
        }
    });

    etYear = findViewById(R.id.etYear);
    etMonth = findViewById(R.id.etMonth);
    rgSuggestWill =findViewById(R.id.rgSuggestWill);
    reviewer = new ArrayList<>();

    final Calendar c = Calendar.getInstance();
    String mm = c.getDisplayName(Calendar.MONTH, Calendar.LONG, Locale.US);
    int yy = c.get(Calendar.YEAR);
    etYear.setText(new StringBuilder().append(yy));
    etMonth.setText(new StringBuilder().append(mm));
    spReviewer = findViewById(R.id.spReviewer);
    getData();

    btnNext = findViewById(R.id.btnNext);
    btnNext.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            SharedPreferences sharedPref = getSharedPreferences("MyData",MODE_PRIVATE);
            SharedPreferences.Editor editor = sharedPref.edit();

            editor.putString("title",etTitle.getText().toString());
            editor.putString("year",etYear.getText().toString());
            editor.putString("month",etMonth.getText().toString());

            int selectedId = rgSuggestWill.getCheckedRadioButtonId();
            radioButton = findViewById(selectedId);
            editor.putString("suggestionwill",radioButton.getText().toString());

            editor.putString("reviewer",spReviewer.getSelectedItem().toString());
            editor.putString("status", "Pending");
            editor.apply();

            Intent intent = new Intent(NewSuggestion.this, NewSuggestion2.class);
            intent.putExtra("approveType",approveID);
            startActivity(intent);
        }
    });
}

private void getData(){
    //Creating a string request
    User user = SharedPrefManager.getInstance(this).getUser();
    StringRequest stringRequest = new StringRequest(URLs.URL_SPINNER+"?department="+user.getDepartment()+"&name="+user.getName(),
            new Response.Listener<String>() {
                @Override
                public void onResponse(String response) {
                    JSONObject j = null;
                    try {
                        j = new JSONObject(response);
                        result = j.getJSONArray(JSON_ARRAY);
                        getReviewers(result);
                    } catch (JSONException e) {
                        e.printStackTrace();
                    }
                }
            },
            new Response.ErrorListener() {
                @Override
                public void onErrorResponse(VolleyError error) {

                }
            });

    RequestQueue requestQueue = Volley.newRequestQueue(this);
    requestQueue.add(stringRequest);
}

private void getReviewers(JSONArray j){
    for(int i=0;i<j.length();i++){
        try {
            JSONObject json = j.getJSONObject(i);

            reviewer.add(json.getString(TAG_NAME));
        } catch (JSONException e) {
            e.printStackTrace();
        }
    }
    spReviewer.setAdapter(new ArrayAdapter<String>(NewSuggestion.this, android.R.layout.simple_spinner_dropdown_item, reviewer));
}

@Override
public void onBackPressed() {

    SharedPreferences sharedPref = getSharedPreferences("MyData", MODE_PRIVATE);
    SharedPreferences.Editor editor = sharedPref.edit();
    editor.putString("title", etTitle.getText().toString());
    editor.apply();
    super.onBackPressed();
    Intent intent = new Intent(NewSuggestion.this, DashboardApp.class);
    intent.putExtra("approveType",approveID);
    startActivity(intent);
}

问题也同样出现在Spinner身上(但是在这个班上不是)。有人可以帮忙吗?

1 个答案:

答案 0 :(得分:0)

您可以为您的sharePreference创建一个单独的类并保存该类中的所有数据,请点击此链接以创建一个类或保存数据并获取数据:-Preventing users to login again after closing the app