如何在再次启动应用程序时检索上一个按钮状态?
问题描述:
我在应用程序中有两个按钮,默认颜色为白色。当我点击第一个按钮时,它的颜色变为绿色,然后我点击第二个按钮,它的颜色变为红色,按钮1变成白色。它工作正常,但是当我再次启动应用程序时,两个按钮的颜色都是白色。我想要做的是检索前一个按钮状态。例如,如果以前如果我单击按钮一,然后再次启动应用程序后,按钮1的颜色已变为绿色。如何在再次启动应用程序时检索上一个按钮状态?
Java代码:
package com.example.pratik.sf2020;
import android.graphics.Color;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
public class Pattern extends AppCompatActivity {
Button b1,b2;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.pattern);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
b1 = (Button) findViewById(R.id.mp1n);
b2 = (Button) findViewById(R.id.mp1o);
b1.setBackgroundColor(Color.WHITE);
b2.setBackgroundColor(Color.WHITE);
b1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
b1.setBackgroundColor(Color.GREEN);
b2.setBackgroundColor(Color.WHITE);
}
}
});
b2.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
b1.setBackgroundColor(Color.WHITE);
b2.setBackgroundColor(Color.RED);
}
}
});
}
}
答
试试这个
SharedPreferences sp=getSharedPreferences("Button", Context.MODE_PRIVATE);
SharedPreferences.Editor Ed=sp.edit();
// get status of button to set backround from SharedPreferences in oncrate() methosd
if(sp.getBoolean("button1",false)){
b1.setBackgroundColor(Color.WHITE);
}else {
b1.setBackgroundColor(Color.GREEN);
}
if(sp.getBoolean("button2",false)){
b2.setBackgroundColor(Color.WHITE);
}else {
b2.setBackgroundColor(Color.GREEN);
}
// set button background status in SharedPreferences
b1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
b1.setBackgroundColor(Color.GREEN);
b2.setBackgroundColor(Color.WHITE);
Ed.putBoolean("button1", true);
Ed.commit();
}
}
});
b2.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
b1.setBackgroundColor(Color.WHITE);
b2.setBackgroundColor(Color.RED);
Ed.putBoolean("button2", true);
Ed.commit();
}
}
});
+0
这工作正常,但只适用于单页。如果我有两个活动,那么问题是相同的,我有问有问题。 –
https://stackoverflow.com/questions/3624280/how-to-use-sharedpreferences-in-android-to-store-fetch-and-edit - 值 – Ricardo
可能会不得不使用sharedPreferences存储按钮值,然后使用getSharedPreferences()方法检索最后保存的值 – Pranita