【问题标题】:How to save the intent Extras in Shared prefrences如何在 Sharedpreferences 中保存 Intent Extras
【发布时间】:2018-04-17 02:16:34
【问题描述】:

这是我的代码,它要求用户提供他们的用户名:

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();
}

这就是我将他的用户名传递给下一个活动的方式:

  intent.putExtra("room_name",((TextView)view).getText().toString() );
            intent.putExtra("user_name",name);
            intent.putExtra("default_name","anyonymous");
            startActivity(intent);

这就是我在下一个活动中收到 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();
    }

我的问题是当用户不输入他的名字并且它返回 null 然后它返回 anyonymous 但是当用户输入他的名字时它会将用户名传递给下一个活动。但是当我重新启动应用程序时,它会再次将anyonymous 传递给下一个活动,而不是用户已经输入的用户名

所以我需要有关如何将输入的用户名保存在共享偏好中并在未来启动应用程序时使用相同的建议,除非没有输入新名称而不是 anyonymous

提前致谢。

【问题讨论】:

    标签: java android android-intent sharedpreferences extra


    【解决方案1】:

    如果您已经使用SharedPreferences 来存储用户名,则无需通过Intent 传递user_nameSharedPreferences 是全局的,可以在整个应用程序中访问。做吧:

    sharedpreferences.getString("username","anonymous")

    在您的目标活动中。

    【讨论】:

      猜你喜欢
      • 2018-06-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-11-16
      • 2014-03-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多