2017-08-09 263 views
-1

我MainActivity.class經由setOnClickListener調用putExtra朝向SecondActivity.classjava.lang.String中android.os.Bundle.getString(java.lang.String中)

Intent intent = new Intent(MainActivity.this, SecondActivity.class); 
intent.putExtra("sentString", stringName); 
startActivity(intent); 

SecondActivity.class setOnClickListener

// Recieve the extra sent from MainActivity.class 
Intent SecondActivityIntent = getIntent(); 
String mString = SecondActivityIntent .getExtras().getString("sentString"); 

// Send extra to another activity ThirdActivity.class 
SecondActivityIntent.putExtra("sentString", mString); 
startActivity(SecondActivityIntent); 

ThirdActivity.class setOnClickListener

// Recieve extra from SecondActivity.class 
Intent thirdActivityintent = getIntent(); 
String mString = thirdActivityintent.getExtra().getString("sentString"); 
// This time I am calling SecondActivity.class but I will not send extra 
thirdActivityintent = new Intent(ThirdActivity.this, SecondActivity.class); 
startActivity(thirdActivityintent); 

ThirdActivity.class導致一個

'java.lang.String中android.os.Bundle.getString(java.lang.String中)' 對空對象引用

這個錯誤是什麼意思?是否因爲SecondActivity.class期望從任何調用活動中獲得額外的功能?我不打算將ExtraExtra放在ThirdActivity上,或者我會強迫。這怎麼解決?

+1

'getIntent()。getExtras()'是空......這一切意味着 –

回答

1

是因爲SecondActivity.class期望從任何調用活動中獲取額外的內容嗎?

是的。

這怎麼解決?

將一個默認值和一個空檢查

// Receive the extra sent from MainActivity.class 
Bundle extras = getIntent().getExtras(); 
String mString = "default"; 

if (extras != null) { 
    mString = extras.getString("sentString"); 
} 
+0

不能因爲價值應用此mString將由最終用戶提供 – Principiante

+0

最終用戶正在交互式會話中運行......我試圖在此處指出的是,當Intent不存在時您有一個空值或默認值 –

+0

感謝分享。這將對我未來的應用程序有所幫​​助。但在我目前的應用程序中,我無法應用它。完成()完成了這個訣竅,但只有當我的應用程序返回1步時,但如果我想回到活動堆棧上,finish()將無法完成,至少就我所知而言。 – Principiante

0

變化

.getExtras().getString("sentString"); 

.getExtras().getString("sentString", "defaultValue"); 
+0

我不能申請這個,因爲我沒有默認值,這個值將由最終用戶 – Principiante

1

把它變成像這樣 FirstActivity

Intent intent = new Intent(MainActivity.this, SecondActivity.class); 
intent.putExtra("sentString", stringName); 
startActivity(intent); 

在SecondActivity

// Recieve the extra sent from MainActivity.class 
Intent SecondActivityIntent = getIntent(); 
String mString = SecondActivityIntent .getStringExtra("sentString"); 
// Send extra to another activity ThirdActivity.class 
Intent thirdIntent = new Intent(SecondActivity.this, ThirdActivity.class); 
thirdIntent.putExtra("sentString", mString); 
startActivity(thirdIntent); 

的ThirdActivity

// Recieve extra from SecondActivity.class 
Intent thirdActivityintent = getIntent(); 
String mString = thirdActivityintent.getStringExtra("sentString"); 
// Just finish Activity 
finish(); 
+0

提供。如果你想返回1步,finish()會起作用。我如何使用finish()返回2或3個步驟? – Principiante

+0

用FLAG CLEAR_TOP或類似的東西開始活動 – Fr099y

相關問題