sma*_*use 0 parameters android bundle nullpointerexception android-intent
我有使用Google地图的活动,这是点击标记的代码.正如您所看到的,它使用参数启动第二个活动:
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);
}
Run Code Online (Sandbox Code Playgroud)
这是第二个活动代码的一部分:
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.viewmerchant);
Bundle b = getIntent().getExtras();
int id = b.getInt("id");
...
}
Run Code Online (Sandbox Code Playgroud)
这是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
Run Code Online (Sandbox Code Playgroud)
如果在第二个活动中我评论这一行
int id = b.getInt("id");
Run Code Online (Sandbox Code Playgroud)
那么它没有错误.那么getId有什么问题?
您必须将bundle提供给intent对象.
加
intent.putExtras(b);
Run Code Online (Sandbox Code Playgroud)
之前startActivity:
Bundle b = new Bundle();
b.putInt("id", (int)id);
intent.putExtras(b);
startActivity(intent);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
124 次 |
| 最近记录: |