Android,我可以使用putExtra传递多个值

46 parameters android

我想将两个值传递给另一个活动,我可以使用putExtra这样做,还是我必须以更复杂的方式执行此操作,这从我的阅读中可以看出来.例如.可以这样的工作吗?

public final static String ID_EXTRA="com.fnesse.beachguide._ID";

Intent i = new Intent(this, CoastList.class);
i.putExtra(ID_EXTRA, "1", "111");
startActivity(i);
Run Code Online (Sandbox Code Playgroud)

以上给出了错误.

编辑

我尝试的第一件事类似于:

i.putExtra(ID_EXTRA1, "1");
i.putExtra(ID_EXTRA2, "111");
Run Code Online (Sandbox Code Playgroud)

但ID_EXTRA2似乎写在ID_EXTRA1上

所以,

i.putExtra(ID_EXTRA, new String[] { "1", "111"});
Run Code Online (Sandbox Code Playgroud)

看起来像go,但如何在第二个活动中从数组中提取值,我一直在使用它作为单个值.

passedVar = getIntent().getStringExtra(CoastList.ID_EXTRA);
Run Code Online (Sandbox Code Playgroud)

我想我必须以某种方式将ID_EXTRA变成一个数组???

小智 141

如果你愿意的话,你可以传递额外的'捆绑'而不是个别的额外内容,例如: -

Intent intent = new Intent(this, MyActivity.class);
Bundle extras = new Bundle();
extras.putString("EXTRA_USERNAME","my_username");
extras.putString("EXTRA_PASSWORD","my_password");
intent.putExtras(extras);
startActivity(intent);
Run Code Online (Sandbox Code Playgroud)

然后在你的Activity中你的触发,你可以像这样引用这些: -

Intent intent = getIntent();
Bundle extras = intent.getExtras();
String username_string = extras.getString("EXTRA_USERNAME");
String password_string = extras.getString("EXTRA_PASSWORD");
Run Code Online (Sandbox Code Playgroud)

或者(如果你愿意): -

Bundle extras = getIntent().getExtras();
String username_string = extras.getString("EXTRA_USERNAME");
String password_string = extras.getString("EXTRA_PASSWORD");
Run Code Online (Sandbox Code Playgroud)

希望这可以帮助!:-)


小智 24

您可以使用多个键传递多个值.代替

i.putExtra(ID_EXTRA, "1", "111");
Run Code Online (Sandbox Code Playgroud)

i.putExtra(ID_EXTRA1, "1");
i.putExtra(ID_EXTRA2, "111");
Run Code Online (Sandbox Code Playgroud)

当然,您必须为键定义2个常量,并且必须在新活动中单独读取.

或者你可以传递一个字符串数组

i.putExtra(ID_EXTRA, new String[] { "1", "111"});
Run Code Online (Sandbox Code Playgroud)

  • @MikeClarke确保ID_EXTRA1和ID_EXTRA2没有分配给它们的相同值*(例如,两者都有`com.fnesse.beachguide._ID`)*.否则它们将被视为相同的键,这将触发覆盖.如果你试图使用数组,使用`getIntent().getStringArrayExtra()`而不是`getIntent().getStringExtra()`. (4认同)

Abh*_*bhi 11

在课堂上增加额外的价值

public class MainActivity extends Activity {
        public final static String USERNAME = "com.example.myfirstapp.MESSAGE";
        public final static String EMAIL = "com.example.myfirstapp.EMAIL";

public void registerUser(View view) {
        Intent intent = new Intent(this, DisplayMessageActivity.class);
        EditText userNameTxt = (EditText) findViewById(R.id.editText1);
        EditText emailTxt = (EditText) findViewById(R.id.editText2);
        String userName = userNameTxt.getText().toString();
        String email = emailTxt.getText().toString();
        intent.putExtra(USERNAME, userName);
        intent.putExtra(EMAIL,email);
        startActivity(intent);

    }
Run Code Online (Sandbox Code Playgroud)

从另一个类中读取额外的值

public class DisplayMessageActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        Intent intent = getIntent();
        String user = intent.getStringExtra(MainActivity.USERNAME);
        String email = intent.getStringExtra(MainActivity.EMAIL);   
Run Code Online (Sandbox Code Playgroud)