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

时间:2018-10-03 01:57:53

标签: java android android-studio android-intent

我遇到的问题是它在第二个活动中打印出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));

这是我第二堂课中的代码。

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

2 个答案:

答案 0 :(得分: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

您已经创建了一个意图,但是您传递了新的意图。使用创建的Intent而不是传递新的Intent。

Intent intent = new Intent(MainActivity.this, User.class);
intent.putExtra("username",String.valueOf(username));
startActivity(intent);

编辑

必须使用String.valueOf(username)来代替username.getText(),因为String.valueOf(username)是将对象转换为String的方法。

Intent intent = new Intent(MainActivity.this, User.class);
intent.putExtra("username",username.getText());
startActivity(intent);

答案 1 :(得分:1)

这里有两个问题。 第一个是您必须传递意图,在其中放置多余的东西,而不是像startp那样创建新的意图,例如

Intent intent = new Intent(MainActivity.this, User.class);
intent.putExtra("username",username.getText().toString());
startActivity(intent);

第二个问题是用户名看起来像editText,String.valueOf不会传递实际值,请像我在代码中提到的那样使用username.getText()。toString()。