如何在 Sharedpreferences 中保存 intent Extras
How to save the intent Extras in Shared prefrences
这是我的代码,它要求用户输入他们的用户名:
private void request_user_name() {
final AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setTitle("Enter name:");
final EditText input_field = new EditText(this);
input_field.setText(sharedpreferences.getString("username",""));
final SharedPreferences.Editor editor = sharedpreferences.edit();
builder.setCancelable(false);
builder.setView(input_field);
final String savedName = sharedpreferences.getString(username,"");
input_field.setText(savedName);
input_field.setSelection(input_field.getText().length());
builder.setPositiveButton("OK", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
name = input_field.getText().toString();
if(TextUtils.isEmpty(savedName)) {
input_field.setError("Your message");
builder.setCancelable(false);
}
editor.putString(username, name);
editor.apply();
}
});
builder.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
if(TextUtils.isEmpty(savedName)) {
input_field.setError("Your message");
builder.setCancelable(false);
}
else
{
dialogInterface.cancel();
request_user_name();
}
}
});
builder.show();
}
这就是我将用户名传递给下一个 Activity:
的方式
intent.putExtra("room_name",((TextView)view).getText().toString() );
intent.putExtra("user_name",name);
intent.putExtra("default_name","anyonymous");
startActivity(intent);
这就是我在接下来 Activity:
中收到 Intent Extra 的方式
if (getIntent().getExtras() != null
&& getIntent().getExtras().get("user_name")!=null) {
user_name = getIntent().getExtras().get("user_name").toString();
}else{
user_name = getIntent().getExtras().get("default_name").toString();
}
我的问题是,当用户不输入他的名字时,它 returns null 然后它 returns anyonymous
但是当用户输入他的名字时,它将用户名传递给下一个 activity。但是当我重新启动应用程序然后再次将 anyonymous
传递给下一个 activity 而不是用户已经输入的用户名
所以我需要关于如何将输入的用户名保存在共享首选项中并在以后启动应用程序时使用相同的建议,除非没有输入新名称而不是 anyonymous
提前致谢。
如果您已经在使用 SharedPreferences
存储 user_name,则无需通过 Intent
传递 user_name
。 SharedPreferences
是全局的,可以在整个应用程序中访问。只要做:
sharedpreferences.getString("username","anonymous")
在你的目标 activity.
这是我的代码,它要求用户输入他们的用户名:
private void request_user_name() {
final AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setTitle("Enter name:");
final EditText input_field = new EditText(this);
input_field.setText(sharedpreferences.getString("username",""));
final SharedPreferences.Editor editor = sharedpreferences.edit();
builder.setCancelable(false);
builder.setView(input_field);
final String savedName = sharedpreferences.getString(username,"");
input_field.setText(savedName);
input_field.setSelection(input_field.getText().length());
builder.setPositiveButton("OK", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
name = input_field.getText().toString();
if(TextUtils.isEmpty(savedName)) {
input_field.setError("Your message");
builder.setCancelable(false);
}
editor.putString(username, name);
editor.apply();
}
});
builder.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
if(TextUtils.isEmpty(savedName)) {
input_field.setError("Your message");
builder.setCancelable(false);
}
else
{
dialogInterface.cancel();
request_user_name();
}
}
});
builder.show();
}
这就是我将用户名传递给下一个 Activity:
的方式 intent.putExtra("room_name",((TextView)view).getText().toString() );
intent.putExtra("user_name",name);
intent.putExtra("default_name","anyonymous");
startActivity(intent);
这就是我在接下来 Activity:
中收到 Intent Extra 的方式 if (getIntent().getExtras() != null
&& getIntent().getExtras().get("user_name")!=null) {
user_name = getIntent().getExtras().get("user_name").toString();
}else{
user_name = getIntent().getExtras().get("default_name").toString();
}
我的问题是,当用户不输入他的名字时,它 returns null 然后它 returns anyonymous
但是当用户输入他的名字时,它将用户名传递给下一个 activity。但是当我重新启动应用程序然后再次将 anyonymous
传递给下一个 activity 而不是用户已经输入的用户名
所以我需要关于如何将输入的用户名保存在共享首选项中并在以后启动应用程序时使用相同的建议,除非没有输入新名称而不是 anyonymous
提前致谢。
如果您已经在使用 SharedPreferences
存储 user_name,则无需通过 Intent
传递 user_name
。 SharedPreferences
是全局的,可以在整个应用程序中访问。只要做:
sharedpreferences.getString("username","anonymous")
在你的目标 activity.