传递长消息时出现java空指针异常
我初始化了DBAdapter对象,但在DBAdapter类的第166Cursor c = db.query(true,TABLE_NAME,null, where, null, null, null, null, null);
行上仍然出现空指针异常
03-30 07:47:19.519: E/AndroidRuntime(4349): FATAL EXCEPTION: main
03-30 07:47:19.519: E/AndroidRuntime(4349): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.assignment1/com.example.assignment1.controller.TripDetailsActivity}: java.lang.NullPointerException
03-30 07:47:19.519: E/AndroidRuntime(4349): at 安卓.app.ActivityThread.performLaunchActivity(ActivityThread.java:2180)
03-30 07:47:19.519: E/AndroidRuntime(4349): at 安卓.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2230)
03-30 07:47:19.519: E/AndroidRuntime(4349): at 安卓.app.ActivityThread.access$600(ActivityThread.java:141)
03-30 07:47:19.519: E/AndroidRuntime(4349): at 安卓.app.ActivityThread$H.handleMessage(ActivityThread.java:1234)
03-30 07:47:19.519: E/AndroidRuntime(4349): at 安卓.os.Handler.dispatchMessage(Handler.java:99)
03-30 07:47:19.519: E/AndroidRuntime(4349): at 安卓.os.Looper.loop(Looper.java:137)
03-30 07:47:19.519: E/AndroidRuntime(4349): at 安卓.app.ActivityThread.main(ActivityThread.java:5041)
03-30 07:47:19.519: E/AndroidRuntime(4349): at java.lang.reflect.Method.invokeNative(Native Method)
03-30 07:47:19.519: E/AndroidRuntime(4349): at java.lang.reflect.Method.invoke(Method.java:511)
03-30 07:47:19.519: E/AndroidRuntime(4349): at com.安卓.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)
03-30 07:47:19.519: E/AndroidRuntime(4349): at com.安卓.internal.os.ZygoteInit.main(ZygoteInit.java:560)
03-30 07:47:19.519: E/AndroidRuntime(4349): at dalvik.system.NativeStart.main(Native Method)
03-30 07:47:19.519: E/AndroidRuntime(4349): Caused by: java.lang.NullPointerException
03-30 07:47:19.519: E/AndroidRuntime(4349): at com.example.assignment1.controller.DBAdapter.getRow(DBAdapter.java:166)
03-30 07:47:19.519: E/AndroidRuntime(4349): at com.example.assignment1.controller.TripDetailsActivity.message(TripDetailsActivity.java:29)
03-30 07:47:19.519: E/AndroidRuntime(4349): at com.example.assignment1.controller.TripDetailsActivity.onCreate(TripDetailsActivity.java:25)
03-30 07:47:19.519: E/AndroidRuntime(4349): at 安卓.app.Activity.performCreate(Activity.java:5104)
03-30 07:47:19.519: E/AndroidRuntime(4349): at 安卓.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1080)
03-30 07:47:19.519: E/AndroidRuntime(4349): at 安卓.app.ActivityThread.performLaunchActivity(ActivityThread.java:2144)
03-30 07:47:19.519: E/AndroidRuntime(4349): ... 11 more
三联活动。爪哇
package com.example.assignment1.controller;
import com.example.assignment1.R;
import 安卓.app.Activity;
import 安卓.database.Cursor;
import 安卓.os.Bundle;
import 安卓.util.Log;
import 安卓.widget.TextView;
public class TripDetailsActivity extends Activity {
public static final String LOG="log";
TextView mess;
DBAdapter db;
@Override
public void onCreate(Bundle savedInstanceState) {
Log.i(LOG,"Trip Details..");
db=new DBAdapter(this);
super.onCreate(savedInstanceState);
setContentView(R.layout.details);
mess=(TextView)findViewById(R.id.message);
Bundle b=getIntent().getExtras();
Log.i(LOG,"------------------"+b.getString("ID"));
String s=b.getString("ID");
message(s);
}
public void message(String idInDB){
Cursor cursor=db.getRow(idInDB);
String row = "";
if(cursor!=null){
if (cursor.moveToFirst()) {
int idDB = cursor.getInt(0);
String name = cursor.getString(1);
String studentNum = cursor.getString(2);
String favColour = cursor.getString(3);
row = "ID: " + idDB + "\n"
+ "Name: " + name + "\n"
+ "Std#: " + studentNum + "\n"
+ "FavColour: " + favColour;
Log.i("LOG",row);
}
cursor.close();
mess.setText(row);
}
else {
mess.setText("Cursor is null");
}
}
}
DBAdapter。java--就是从TripDetaiActivity调用的方法。爪哇
public Cursor getRow(Long idInDB) {
String where = TRIP_ID + "=" + idInDB;
Cursor c = db.query(true, TABLE_NAME, null, where, null, null, null, null, null);
if (c != null) {
c.moveToFirst();
}
return c;
}
共 (0) 个答案