android将数据从一个活动发送给其他人

时间:2013-12-13 14:20:01

标签: android android-intent android-activity

我的数据传输到其他活动有问题我的代码。

...
Intent i = new Intent(MainActivity.this, LoggedMain.class);
Intent toOther = new Intent(MainActivity.this, PickerFormActivity.class);
toOther.putExtra(LOGIN_NAME, userName);
toOther.putExtra(PASSWORD, password);                   
i.putExtra(LOGIN_NAME, userName);
startActivity(i);

在LoggedMain活动中,我可以使用

获取价值
Intent i = getIntent();
String userName = i.getExtras().getString(MainActivity.LOGIN_NAME); 

但是当我在PickerFormActivity活动中使用时,我得到空指针异常

final String username = getIntent().getExtras().getString(MainActivity.LOGIN_NAME);
final String password = getIntent().getExtras().getString(MainActivity.PASSWORD);
有人可以帮我解决这个问题吗?

3 个答案:

答案 0 :(得分:0)

而不是使用String mString = getIntent().getExtras().getString(string);

使用String mString = (String) getIntent().getSerializableExtra(string);

答案 1 :(得分:0)

您应该以其他方式启动活动PickerFormActivity。数据随着创建的意图“传播”。因此,如果您使用其他意图启动活动,则会丢失数据。

例如,如果从LoggedMain启动PickerFormActivity,则可以执行以下操作:

Intent i = new Intent(MainActivity.this, LoggedMain.class);
i.putExtra(LOGIN_NAME, userName);
i.putExtra(PASSWORD, password);                   
i.putExtra(LOGIN_NAME, userName);
startActivity(i);

然后

Intent i = getIntent();
String userName = i.getExtras().getString(MainActivity.LOGIN_NAME); 
String password = i.getExtras().getString(MainActivity.LOGIN_NAME); 
Intent other = new Intent(LoggedMain.this, PickerFormActivity.class);
other.putExtra(LOGIN_NAME, userName);
other.putExtra(PASSWORD, password); 
startActivity(other);

答案 2 :(得分:0)

您正在宣布Intent to other的额外内容,但您没有称之为意图。如果你在LoggedMain.class之后调用Intent toOther,你需要将你想要的所有额外内容传递给LogntMain,然后再将它们传递给下一个intent。 您只能在First Activity中声明要传递给Second Activity的内容。 在这种情况下,最好的办法是使用SharedPreferences