1

我有使用Google地圖的活動,這是點擊標記的代碼。 正如你可以看到它開始與參數的第二活動:NullPointerException啓動包第二個活動

public void onInfoWindowClick(Marker marker) { 
    SQLiteDatabase dbRead = db.getReadableDatabase(); 
    String[] columns = {"_id", "title", "addr"}; 
    Cursor result = dbRead.query("merchants", columns, null, null, null, null, null); 
    long id = 0; 

    while(result.moveToNext()) { 
     if (marker.getTitle().equals(result.getString(1)) && marker.getSnippet().equals(result.getString(2))) { 
      id = result.getLong(0); 
     } 
    } 

    Intent intent = new Intent(this, ViewMerchant.class); 
    Bundle b = new Bundle(); 
    b.putInt("id", (int)id); 
    startActivity(intent); 
} 

這是第二次活動的部分代碼:

protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.viewmerchant); 

    Bundle b = getIntent().getExtras(); 
    int id = b.getInt("id"); 

    ... 
} 

這是logcat的:

05-18 19:05:34.785: D/AndroidRuntime(28444): Shutting down VM 
05-18 19:05:34.785: W/dalvikvm(28444): threadid=1: thread exiting with uncaught exception (group=0x419317c0) 
05-18 19:05:34.790: E/AndroidRuntime(28444): FATAL EXCEPTION: main 
05-18 19:05:34.790: E/AndroidRuntime(28444): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.bpem/com.example.bpem.ViewMerchant}: java.lang.NullPointerException 
05-18 19:05:34.790: E/AndroidRuntime(28444): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2339) 
05-18 19:05:34.790: E/AndroidRuntime(28444): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2389) 
05-18 19:05:34.790: E/AndroidRuntime(28444): at android.app.ActivityThread.access$600(ActivityThread.java:153) 
05-18 19:05:34.790: E/AndroidRuntime(28444): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1269) 
05-18 19:05:34.790: E/AndroidRuntime(28444): at android.os.Handler.dispatchMessage(Handler.java:99) 
05-18 19:05:34.790: E/AndroidRuntime(28444): at android.os.Looper.loop(Looper.java:137) 
05-18 19:05:34.790: E/AndroidRuntime(28444): at android.app.ActivityThread.main(ActivityThread.java:5289) 
05-18 19:05:34.790: E/AndroidRuntime(28444): at java.lang.reflect.Method.invokeNative(Native Method) 
05-18 19:05:34.790: E/AndroidRuntime(28444): at java.lang.reflect.Method.invoke(Method.java:525) 
05-18 19:05:34.790: E/AndroidRuntime(28444): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:739) 
05-18 19:05:34.790: E/AndroidRuntime(28444): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:555) 
05-18 19:05:34.790: E/AndroidRuntime(28444): at dalvik.system.NativeStart.main(Native Method) 
05-18 19:05:34.790: E/AndroidRuntime(28444): Caused by: java.lang.NullPointerException 
05-18 19:05:34.790: E/AndroidRuntime(28444): at com.example.bpem.ViewMerchant.onCreate(ViewMerchant.java:28) 
05-18 19:05:34.790: E/AndroidRuntime(28444): at android.app.Activity.performCreate(Activity.java:5133) 
05-18 19:05:34.790: E/AndroidRuntime(28444): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087) 
05-18 19:05:34.790: E/AndroidRuntime(28444): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2293) 
05-18 19:05:34.790: E/AndroidRuntime(28444): ... 11 more 

如果在第二次活動中我評論此行

int id = b.getInt("id"); 

然後它沒有錯誤地工作。那麼getId有什麼問題?

+0

變化'b.putInt( 「ID」,(INT)ID);''來intent.putExtra( 「ID」,(INT )id);' – Lal

+0

我檢查了b並且結果爲null。爲什麼? – smartmouse

+0

嘗試我的第一條評論... @ smartmouse – Lal

回答

5

您必須爲意向對象提供包。

添加

intent.putExtras(b); 

startActivity

Bundle b = new Bundle(); 
b.putInt("id", (int)id); 
intent.putExtras(b); 
startActivity(intent); 
+1

作品!謝謝 – smartmouse

+0

我現在有一個新的錯誤:第一個活動發送id變量爲「2561503679」作爲值,但在第二個活動中,id的值是「-1733463617」。這是LogCat:http://pastebin.com/NurxH5f5 – smartmouse

+1

使用putLong/getLong代替putInt/getInt,當然不是在int處投射 – Blackbelt

相關問題