2013-12-13 147 views
0

我有一個數據傳輸到其他活動的問題有我的代碼。android將數據從一項活動發送給其他人

... 
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活動IM使用越來越空指針異常

final String username = getIntent().getExtras().getString(MainActivity.LOGIN_NAME); 
final String password = getIntent().getExtras().getString(MainActivity.PASSWORD); 

有人可以幫我這個問題?

+2

使用'startActivity(toOther);'開始活動,因爲你是在'toOther'intent增加值,而不是'i' –

+0

我需要的值兩項活動 – user3099680

+0

但一次只能啓動一個Activity,所以使用switch case或if-else梯形圖根據條件 –

回答

0

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

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

0

你應該開始的意圖toOther活動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); 
0

您聲明臨時演員意向toOther,但你是不是調用一個意圖。如果您在LoggedMain.class之後調用其他方法,則需要將所有您想要的額外代碼傳遞給其他方法,然後再將它們傳遞給下一個方法。 您只能在第一個活動中聲明要傳遞給第二個活動的內容。在這種情況下做 最好的辦法是使用SharedPreferences

+0

感謝ui不能評分你的投票,但它有幫助! – user3099680

相關問題