将两个值从一个活动传递到另一个活动

3

我很新于Android开发。我正在尝试开发一个用于练习的登录表单,但我无法将两个值传递并在另一个活动中显示。

Intent intent = new Intent(this, Success.class);
        EditText edituser = (EditText) findViewById(R.id.userinput);
        EditText editpass= (EditText) findViewById(R.id.passinput);
        String username = edituser.getText().toString();
        String password = editpass.getText().toString();

        intent.putExtra(EXTRA_USER, username);
        intent.putExtra(EXTRA_PASSWORD, password);
        startActivity(intent);

并且目标活动是:
 Intent intent = getIntent();
    String username = intent.getStringExtra(MainActivity.EXTRA_USER);
    String password = intent.getStringExtra(MainActivity.EXTRA_PASSWORD);

    // Create the text view
    TextView userView = new TextView(this);
    TextView passView = new TextView(this);
    userView.setTextSize(40);
    userView.setText(username);

    passView.setTextSize(40);
    passView.setText(password);

    // Set the text view as the activity layout
    setContentView(userView);
    setContentView(passView);

1
你对这段代码有什么问题? - Ram kiran Pachigolla
1
更具体地说,是什么让您无法通过它? - karllindmark
我只能在屏幕上获取第二个值,即密码。 - Devesh
为什么要设置两次视图? - Nermeen
1
setContentView(passView); 是引起这个问题的原因。我认为你应该使用一个包含两个TextView的XML文件。然后通过它们的ID找到它们,并在两个TextView中设置文本。 - MysticMagicϡ
显示剩余4条评论
3个回答

5

你遇到的问题是当你第二次调用 setContentView() 时,你将旧视图从屏幕中移除了。

尝试将你的视图添加到一个 ViewGroup(如 LinearLayout),然后将其作为整体添加到屏幕上,而不是单独的视图。

类似这样:

LinearLayout ll = new LinearLayout(this);
ll.addView(userView);
ll.addView(passView);
setContentView(ll);

3
你只得到第二个值,是因为你设置了两次视图,第二次覆盖了用户名。你可以使用addContentView,或者创建一个包含两个文本视图的xml并使用它。

1

在第二个布局中使用另一个布局并设置意图值...

setContentView(R.layout.anotherlayout);

TextView user = (TextView) findViewById(R.id.usertext);
TextView pass= (TextView) findViewById(R.id.passtext);

Intent intent = getIntent();
String username = intent.getStringExtra(MainActivity.EXTRA_USER);
String password = intent.getStringExtra(MainActivity.EXTRA_PASSWORD);

user.setText(username);
pass.setText(password);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接