Android ID给定空指针异常
我正在尝试制作一个简单的联系人列表应用程序,当我试图通过“活动”通过“结果”点击电话列表来编辑我的联系人时,编辑后当我按下“保存”按钮时,它通过抛出“Android ID给定空指针异常,android,eclipse,sqlite,nullpointerexception,Android,Eclipse,Sqlite,Nullpointerexception,我正在尝试制作一个简单的联系人列表应用程序,当我试图通过“活动”通过“结果”点击电话列表来编辑我的联系人时,编辑后当我按下“保存”按钮时,它通过抛出“id=null”来给我空指针异常。我调试应用程序,当我点击联系人在列表上编辑时,它会得到id,但当我保存编辑部分时,id为null。 以下是源代码: public class WebpreneurActivity extends ListActivity { private static final int CONTACT_CREATE
id=null
”来给我空指针异常。我调试应用程序,当我点击联系人在列表上编辑时,它会得到id,但当我保存编辑部分时,id为null。
以下是源代码:
public class WebpreneurActivity extends ListActivity {
private static final int CONTACT_CREATE = 0;
private static final int CONTACT_EDIT = 1;
public static long id1;
//select the second one, Android view menu
private static final int INSERT_ID = Menu.FIRST;
private static final int DELETE_ID = Menu.FIRST + 1;
private DBHandler dbHelper;
private Cursor c;
ImageButton imageButton;
public static long rowId;
@Override
protected void onCreate(Bundle savedInstanceState) {
Log.d("database1" ,"0");
Log.d("Your Location4", "ok4:");
super.onCreate(savedInstanceState);
Log.d("database1" ,"1");
setContentView(R.layout.activity_webpreneur);
Log.d("database1" ,"2");
dbHelper = new DBHandler(this);
Log.d("database1" ,"3");
dbHelper.open();
fillData();
//dbHelper.open();
//addListenerOnButton();
//dbHelper.addContact();
imageButton = (ImageButton) findViewById(R.id.imageButton1);
Log.d("database1" ,"button");
imageButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View arg0) {
Log.d("database1" ,"b4");
Intent i = new Intent(getApplicationContext(), ContactEdit.class);
startActivityForResult(i, CONTACT_CREATE);
Log.d("database1" ,"button3");
//fillData();
}
});
//dbHelper.close();
}
@SuppressWarnings("deprecation")
public void fillData() {
Log.d("Your Location4", "ok6:");
c = dbHelper.fetchAllRows();
Log.d("Your Location4", "ok8:");
//startManagingCursor(c);
Log.d("Your Location4", "ok2:");
NoIdCursorWrapper nc = new NoIdCursorWrapper(c, DBHandler.Key_ID);
ListAdapter adapter = new SimpleCursorAdapter(this,
R.layout.contact_row, nc, new String[] { DBHandler.Key_Name,
DBHandler.Key_Phone }, new int[] { R.id.name,
R.id.phonenumber });
setListAdapter(adapter);
}
protected void onListItemClick(ListView l, View v, int position, long id) {
super.onListItemClick(l, v, position, id);
Intent i = new Intent(this, ContactEdit.class);
i.putExtra(DBHandler.Key_ID, c.getLong(c.getColumnIndex(DBHandler.Key_ID)));
i.putExtra(DBHandler.Key_Name, c.getString(c.getColumnIndex(DBHandler.Key_Name)));
i.putExtra(DBHandler.Key_Address, c.getString(c.getColumnIndex(DBHandler.Key_Address)));
i.putExtra(DBHandler.Key_Phone, c.getString(c.getColumnIndex(DBHandler.Key_Phone)));
i.putExtra(DBHandler.Key_Website, c.getString(c.getColumnIndex(DBHandler.Key_Home)));
startActivityForResult(i, CONTACT_EDIT);
}
protected void onActivityResult(int requestCode, int resultCode,
Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (resultCode == RESULT_OK) {
String name = data.getStringExtra(DBHandler.Key_Name);
String address = data.getStringExtra(DBHandler.Key_Address);
String mobile = data.getStringExtra(DBHandler.Key_Phone);
String home = data.getStringExtra(DBHandler.Key_Home);
switch (requestCode) {
case CONTACT_CREATE:
Log.d("Your Location4", "jj:");
dbHelper.createRow(name, address, mobile, home);
Log.d("Your Location4" , "ok90:");
fillData();
break;
case CONTACT_EDIT:
//null pointer exception////// String id = data.getStringExtra(DBHandler.Key_ID);
Log.d("Your Location4" , "ok9c:");
long rowId=Long.parseLong(id.trim());
Log.d("Your Location4" , "ok9b:");
if (rowId != (Long)null){
dbHelper.updateRow(rowId, name, address, mobile, home);
}
fillData();
break;
}
}
}
}
这是我的原木猫//////////
01-29 12:33:05.070:W/dalvikvm(29585):threadid=1:线程以未捕获异常退出(组=0x4001d578)
01-29 12:33:05.090:E/AndroidRuntime(29585):致命异常:主
01-29 12:33:05.090:E/AndroidRuntime(29585):java.lang.RuntimeException:未能将结果ResultInfo{who=null,request=1,result=-1,data=Intent{(has extras)}传递到活动{com.webpreneur\u contactlist/com.webpreneur\u contactlist.WebpreneurActivity}:java.lang.NumberFormatException:ID
01-29 12:33:05.090:E/AndroidRuntime(29585):在android.app.ActivityThread.deliverResults(ActivityThread.java:2553)
01-29 12:33:05.090:E/AndroidRuntime(29585):在android.app.ActivityThread.handleSendResult(ActivityThread.java:2595)上
01-29 12:33:05.090:E/AndroidRuntime(29585):在android.app.ActivityThread.access$2000(ActivityThread.java:121)
01-29 12:33:05.090:E/AndroidRuntime(29585):在android.app.ActivityThread$H.handleMessage(ActivityThread.java:973)
01-29 12:33:05.090:E/AndroidRuntime(29585):在android.os.Handler.dispatchMessage(Handler.java:99)上
01-29 12:33:05.090:E/AndroidRuntime(29585):位于android.os.Looper.loop(Looper.java:138)
01-29 12:33:05.090:E/AndroidRuntime(29585):位于android.app.ActivityThread.main(ActivityThread.java:3701)
01-29 12:33:05.090:E/AndroidRuntime(29585):位于java.lang.reflect.Method.Invokenactive(本机方法)
01-29 12:33:05.090:E/AndroidRuntime(29585):位于java.lang.reflect.Method.invoke(Method.java:507)
01-29 12:33:05.090:E/AndroidRuntime(29585):在com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:878)
01-29 12:33:05.090:E/AndroidRuntime(29585):在com.android.internal.os.ZygoteInit.main(ZygoteInit.java:636)
01-29 12:33:05.090:E/AndroidRuntime(29585):在dalvik.system.NativeStart.main(本机方法)
01-29 12:33:05.090:E/AndroidRuntime(29585):由以下原因引起:java.lang.NumberFormatException:ID
01-29 12:33:05.090:E/AndroidRuntime(29585):at java.lang.Long.parse(Long.java:353)
01-29 12:33:05.090:E/AndroidRuntime(29585):at java.lang.Long.parseLong(Long.java:344)
01-29 12:33:05.090:E/AndroidRuntime(29585):at java.lang.Long.parseLong(Long.java:311)
01-29 12:33:05.090:E/AndroidRuntime(29585):在com.webpreneur_contactlist.WebpreneurActivity.onActivityResult(WebpreneurActivity.java:129)
01-29 12:33:05.090:E/AndroidRuntime(29585):在android.app.Activity.dispatchActivityResult(Activity.java:3908)
01-29 12:33:05.090:E/AndroidRuntime(29585):在android.app.ActivityThread.deliverResults(ActivityThread.java:2549)
01-29 12:33:05.090:E/AndroidRuntime(29585):。。。11更多//您正在分配id,只要
i.putExtra(DBHandler.Key_ID, c.getLong(c.getColumnIndex(DBHandler.Key_ID)));
//你得到的是字符串
String id = data.getStringExtra(DBHandler.Key_ID);
//你喜欢下面这行吗
long id = data.getLongExtra(DBHandler.Key_ID);
logcat错误在哪里?在哪一行出现空指针异常?我在onactivityresult中的代码中提到了这一点,在这里“String id=data.getStringExtra(DBHandler.Key_id);”long id=data.getLongExtra(DBHandler.Key_id);是不可行的,是说添加一个以上的参数,这是默认的长值