我在论坛上闲逛,看到很多用户在文本字段中寻找使用共享偏好的方法并永久保存,而不必使用"调用"按钮。我是其中一个用户嘿嘿..现在我有一个用户名字段,我可以点击一个按钮"保存"保存数据,但是当我重新启动应用程序时,来自用户字段(文本字段)的数据消失了,我必须使用另一个按钮来调用"数据回到现场。如何更改代码,以便在您单击保存刚刚写入的数据时,在重新启动应用程序时保留该数据。 我检索数据的代码如下所示。 " for123"是呼叫按钮的onclick。
}
//Hämta nummer knappen
public void for123(View view){
SharedPreferences sharedPref = getSharedPreferences("userInfo", Context.MODE_PRIVATE);
String name = sharedPref.getString("username", "");
numTxt.setText(name + " ");
}
这几乎是整个mainActivityjava文件,不知道如何导入java文件的开头嘿嘿......
Button sendSMS;
Button sendSMSaon;
Button sendSMSaoff;
Button sendSMSrela1;
Button sendSMSrela2;
EditText msgTxt;
EditText numTxt;
EditText aonTxt;
EditText aoffTxt;
EditText rela1txt;
EditText rela2txt;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
sendSMS = (Button) findViewById(R.id.skicka);
sendSMSaon = (Button) findViewById(R.id.skickaaon);
sendSMSaoff = (Button) findViewById(R.id.skickaaoff);
sendSMSrela1 = (Button) findViewById(R.id.skickarela1);
sendSMSrela2 = (Button) findViewById(R.id.skickarela2);
msgTxt = (EditText) findViewById(R.id.Textmeddelande);
numTxt = (EditText) findViewById(R.id.nummer);
aonTxt = (EditText) findViewById(R.id.aon);
aoffTxt = (EditText) findViewById(R.id.aoff);
rela1txt = (EditText) findViewById(R.id.rela1txt);
rela2txt = (EditText) findViewById(R.id.relä2txt);
msgTxt.setVisibility(View.INVISIBLE);
aonTxt.setVisibility(View.INVISIBLE);
aoffTxt.setVisibility(View.INVISIBLE);
rela1txt.setVisibility(View.INVISIBLE);
rela2txt.setVisibility(View.INVISIBLE);
sendSMSaoff.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String mymsgaoff = aoffTxt.getText().toString();
String theNumber = numTxt.getText().toString();
sendMsg(theNumber, mymsgaoff);
}
}
);
sendSMSaon.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String mymsgaon = aonTxt.getText().toString();
String theNumber = numTxt.getText().toString();
sendMsg(theNumber, mymsgaon);
}
}
);
sendSMS.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String myMsg = msgTxt.getText().toString();
String theNumber = numTxt.getText().toString();
sendMsg(theNumber, myMsg);
}
}
);
sendSMSrela1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String myMsgrela1 = rela1txt.getText().toString();
String theNumber = numTxt.getText().toString();
sendMsg(theNumber, myMsgrela1);
}
}
);
sendSMSrela2.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String mymsgrela2 = rela2txt.getText().toString();
String theNumber = numTxt.getText().toString();
sendMsg(theNumber, mymsgrela2);
}
}
);
}
//Sparar numret
public void saveInfo(View view) {
SharedPreferences sharedPref = getSharedPreferences("userInfo", Context.MODE_PRIVATE);
SharedPreferences.Editor editor = sharedPref.edit();
editor.putString("username", numTxt.getText().toString());
editor.apply();
Toast.makeText(this, "saved", Toast.LENGTH_LONG).show();
}
//Hämta nummer knappen
public void for123(View view){
SharedPreferences sharedPref = getSharedPreferences("userInfo", Context.MODE_PRIVATE);
String name = sharedPref.getString("username", "");
numTxt.setText(name + " ");
}
private void sendMsg(String theNumber, String myMsg)
{
SmsManager sms = SmsManager.getDefault();
sms.sendTextMessage(theNumber, null, myMsg, null, null);
}
}
答案 0 :(得分:1)
我最好的建议是在uri
生命周期方法中使用您的函数。这样,只要您的应用程序成为焦点,它就会被调用。
它的工作原理如下:
uri.canonize
祝你好运!
答案 1 :(得分:0)
要保存共享偏好设置数据,
public callStopButtonClick(){
SharedPreferences sharedPref = getSharedPreferences("userInfo", Context.MODE_PRIVATE);
SharedPreferences.Editor editor = sharedPref.edit();
editor.putString("username", "<value of username>")
editor.commit();
}
在简历上编写代码,
@Override
protected void onResume() {
super.onResume();
SharedPreferences sharedPref = getSharedPreferences("userInfo", Context.MODE_PRIVATE);
String name = sharedPref.getString("username", "");
numTxt.setText(name + " ");
}
我不确定这会对您有所帮助,但我希望这会为您实现目标。