Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/363.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在共享优先级中保存额外的意图_Java_Android_Android Intent_Sharedpreferences_Extra - Fatal编程技术网

Java 如何在共享优先级中保存额外的意图

Java 如何在共享优先级中保存额外的意图,java,android,android-intent,sharedpreferences,extra,Java,Android,Android Intent,Sharedpreferences,Extra,以下是我向用户请求用户名的代码: 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(sharedpreferenc

以下是我向用户请求用户名的代码:

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);
 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();
    }
这就是我在下一个活动中获得额外意图的方式:

  intent.putExtra("room_name",((TextView)view).getText().toString() );
            intent.putExtra("user_name",name);
            intent.putExtra("default_name","anyonymous");
            startActivity(intent);
 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


提前感谢。

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

SharedReferences.getString(“用户名”、“匿名”)

在你的目标活动中