2013-11-09 42 views
1

如果已經查看,我有問題可以顯示烤麪包而不是其他麪包。我有兩個活動,在第一活動吐司顯示和我有這樣的代碼:Android:無法顯示烤麪包

@Override 
protected void onCreate(Bundle savedInstanceState) { 
// TODO Auto-generated method stub 
super.onCreate(savedInstanceState); 
setContentView(R.layout.q_050); 
String str = getIntent().getStringExtra("sent"); 
// at this line--> if(str.equals("activity_two")){ 
    Toast.makeText(getApplicationContext(), getApplicationContext().getString(R.string.app_name), Toast.LENGTH_SHORT).show(); 
} 
else{ 
    Toast.makeText(getApplicationContext(), getApplicationContext().getString(R.string.checkpoint), Toast.LENGTH_SHORT).show(); 
} 

在後退按鈕第二活動我包括這樣的:

Button b3 = (Button)findViewById(R.id.b3); 
       b3.setOnClickListener(new Button.OnClickListener() { 
         public void onClick(View v){ 

          Intent myIntentActivity1 = new Intent(Q_051.this,Q_050.class); 
          myIntentActivity1.putExtra("sent", "activity_two"); 
          startActivity(myIntentActivity1); 

和logcat的問題是此:

11-09 16:29:51.920: E/AndroidRuntime(1510): FATAL EXCEPTION: main 
11-09 16:29:51.920: E/AndroidRuntime(1510): java.lang.RuntimeException: Unable to start activity ComponentInfo{org.quizcelebrita/org.quizcelebrita.Q_050}: java.lang.NullPointerException 
11-09 16:29:51.920: E/AndroidRuntime(1510):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2100) 
11-09 16:29:51.920: E/AndroidRuntime(1510):  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2125) 
11-09 16:29:51.920: E/AndroidRuntime(1510):  at android.app.ActivityThread.access$600(ActivityThread.java:140) 
11-09 16:29:51.920: E/AndroidRuntime(1510):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1227) 
11-09 16:29:51.920: E/AndroidRuntime(1510):  at android.os.Handler.dispatchMessage(Handler.java:99) 
11-09 16:29:51.920: E/AndroidRuntime(1510):  at android.os.Looper.loop(Looper.java:137) 
11-09 16:29:51.920: E/AndroidRuntime(1510):  at android.app.ActivityThread.main(ActivityThread.java:4898) 
11-09 16:29:51.920: E/AndroidRuntime(1510):  at java.lang.reflect.Method.invokeNative(Native Method) 
11-09 16:29:51.920: E/AndroidRuntime(1510):  at java.lang.reflect.Method.invoke(Method.java:511) 
11-09 16:29:51.920: E/AndroidRuntime(1510):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1006) 
11-09 16:29:51.920: E/AndroidRuntime(1510):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:773) 
11-09 16:29:51.920: E/AndroidRuntime(1510):  at dalvik.system.NativeStart.main(Native Method) 
11-09 16:29:51.920: E/AndroidRuntime(1510): Caused by: java.lang.NullPointerException 
11-09 16:29:51.920: E/AndroidRuntime(1510):  at org.quizcelebrita.Q_050.onCreate(Q_050.java:32) 
11-09 16:29:51.920: E/AndroidRuntime(1510):  at android.app.Activity.performCreate(Activity.java:5206) 
11-09 16:29:51.920: E/AndroidRuntime(1510):  at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1083) 
11-09 16:29:51.920: E/AndroidRuntime(1510):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2064) 
11-09 16:29:51.920: E/AndroidRuntime(1510):  ... 11 more 

在檢測到問題的線路是這樣的:

if(str.equals("activity_two")){ 

回答

2

變化

Bundle value = getIntent().getExtras(); 
String str= value.getString("sent").toString(); 

String str = getIntent().getStringExtra("sent"); 

也,在Java字符串比較應通過equals方法

if(str.equals("activity_two")) 
+0

謝謝你現在的作品,但它總是顯示相同的消息:( – Gioele

+0

你有沒有改變if條件,因爲我提到過嗎? – Blackbelt

+0

這最後一行給出我在日誌中的問題 – Gioele

0

你在,如果條件得到一個空指針異常進行你提到了 嘗試調試你的應用程序,並在這一行放置一個斷點: -

String str = getIntent().getStringExtra("sent"); 

檢查str是否獲得任何值。我猜它沒有收到任何字符串,所以這就是爲什麼它顯示空指針異常