意图投入2个额外的东西

时间:2012-08-04 00:03:52

标签: java android

我已经表达了意图并且我已经加入了2个额外内容

Intent intent = new Intent(MainActivity.this, Options.class);
                TextView labelName = (TextView) findViewById(R.id.label1); // value = "Counter1"
                TextView label2Name = (TextView) findViewById(R.id.label2); // value = "Counter 2"
                String lblNameDefault = labelName.getText().toString();
                String lbl2NameDefault = label2Name.getText().toString();
                intent.putExtra(LABEL_NAME_DEFAULT, lblNameDefault);
                intent.putExtra(LABEL_2_NAME_DEFAULT, lbl2NameDefault);

在我的其他活动中,我会像这样从

中检索信息
//Get name from the label
    Intent intent = getIntent();
    String lblNameDefault = intent.getStringExtra(MainActivity.LABEL_NAME_DEFAULT);
    String lbl2NameDefault = intent.getStringExtra(MainActivity.LABEL_2_NAME_DEFAULT);



   //Set current name to editText
    EditText labelNameDefault = (EditText)findViewById(R.id.set_name);
    EditText label2NameDefault = (EditText)findViewById(R.id.set_name2);
    labelNameDefault.setText(lblNameDefault, TextView.BufferType.EDITABLE);
    label2NameDefault.setText(lbl2NameDefault, TextView.BufferType.EDITABLE);

问题是我收到了labelNameDefault和label2NameDefault LABEL_2_NAME_DEFAULT的结果。

我可以只传递一个额外的吗? 我怎么能通过它们?

默认情况下,labelName的值为“Counter 1”,label2Name的值为“counter 2”

如果我评论intent.putExtra(LABEL_2_NAME_DEFAULT, lbl2NameDefault);,第一个标签名称就可以了。 看起来LABEL_2_NAME_DEFAULT正在覆盖LABEL_NAME_DEFAULT

3 个答案:

答案 0 :(得分:1)

如果您愿意,可以传递额外内容的“捆绑”而不是单独的附加内容,例如: -

Intent intent = new Intent(this, MyActivity.class);
Bundle extras = new Bundle();
extras.putString("LABEL_NAME_DEFAULT",lblNameDefault);
extras.putString("LABEL_2_NAME_DEFAULT",lbl2NameDefault);
intent.putExtras(extras);
startActivity(intent);
Then in your Activity that your triggering, you can reference these like so:-

Intent intent = getIntent();
Bundle extras = intent.getExtras();
String username_string = extras.getString("LABEL_NAME_DEFAULT");
String password_string = extras.getString("LABEL_2_NAME_DEFAULT");
Or (if you prefer):-

Bundle extras = getIntent().getExtras();
String username_string = extras.getString("LABEL_NAME_DEFAULT");
String password_string = extras.getString("LABEL_2_NAME_DEFAULT");

Hope this helps! :-)

答案 1 :(得分:0)

您可以在意图中传递两个(或更多)额外内容。但是,您需要确保LABEL_2_NAME_DEFAULTLABEL_NAME_DEFAULT不具有相同的值。

答案 2 :(得分:0)

活动一

Intent intent = new Intent(MainActivity.this, Options.class);
            TextView labelName = (TextView) findViewById(R.id.label1); // value = "Counter1"
            TextView label2Name = (TextView) findViewById(R.id.label2); // value = "Counter 2"
            String lblNameDefault = labelName.getText().toString();
            String lbl2NameDefault = label2Name.getText().toString();
            intent.putExtra("LABEL_NAME_DEFAULT", lblNameDefault);
            intent.putExtra("LABEL_2_NAME_DEFAULT", lbl2NameDefault);

活动二

 username_string = getIntent().getExtras().getString("LABEL_NAME_DEFAULT");
 password_string = getIntent().getExtras().getString("LABEL_2_NAME_DEFAULT");