将数据从一个活动传递到另一个活动然后打印

Bre*_*ett 2 java android android-intent android-studio

我遇到的问题是它在第二个活动上打印出Null而不是输入的实际用户名.数据是否正确传递给第二个活动?第二个活动需要更多代码吗?对不起,但不是最好的编程.

我的主要课程中有这段代码

if (username.getText().toString().equals("batman") &&
password.getText().toString().equals("Joker")) { 
Toast.makeText(MainActivity.this, "Username and 
password is correct", Toast.LENGTH_SHORT).show();
Intent intent = new Intent("com.example.*******.loginpage.User");
intent.putExtra("username",String.valueOf(username));
startActivity(new Intent(MainActivity.this, User.class));
Run Code Online (Sandbox Code Playgroud)

这是我的第二堂课内的代码.

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_user);

Intent intent = getIntent();
String username = getIntent().getStringExtra("username");

TextView textView = (TextView) findViewById(R.id.textView4);
textView.setText("Welcome" + " " + username );
Run Code Online (Sandbox Code Playgroud)

Ran*_*ira 5

问题是你在第一堂课的意图

Intent intent = new Intent("com.example.*******.loginpage.User"); <-- have created an intent
intent.putExtra("username",String.valueOf(username));
startActivity(new Intent(MainActivity.this, User.class)); <-- but using new Intent
Run Code Online (Sandbox Code Playgroud)

您已经创建了一个intent但是您传递了新的intent.使用您创建的Intent而不是传递新的Intent.

Intent intent = new Intent(MainActivity.this, User.class);
intent.putExtra("username",String.valueOf(username));
startActivity(intent);
Run Code Online (Sandbox Code Playgroud)

编辑

相反,使用String.valueOf(username)你必须使用username.getText(),因为String.valueOf(username)是将对象转换为String的方法.

Intent intent = new Intent(MainActivity.this, User.class);
intent.putExtra("username",username.getText());
startActivity(intent);
Run Code Online (Sandbox Code Playgroud)