2014-01-29 49 views
0

我試圖做一個簡單的聯繫人列表中的應用程序,當我試圖通過點擊手機名單上,通過對結果的活動,編輯後,編輯我接觸時,我按下了保存按鈕,它給我的空指針除了拋出「id=null」.i調試應用程序,當我點擊聯繫人列表上的編輯它獲得的ID,但是當保存編輯部分,它給ID爲null。 這裏是源代碼:ID給予空指針異常

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; 

      } 
     } 
    } 
} 

這是我的日誌貓//////////

12月1日至29日:33:05.070:W/dalvikvm(29585):主題ID = 1:螺紋帶未捕獲的異常退出(組= 0x4001d578) 12月1日至29日:33:05.090:E/AndroidRuntime(29585):致命異常:主 12月1日至29日:33:05.090:E/AndroidRuntime(29585):了java.lang.RuntimeException:失敗遞送結果ResultInfo {誰= NULL,請求= 1,結果= -1,數據=意向{(具有額外)}}到{活動com.webpreneur_contactlist/com.webpreneur_contactlist.WebpreneurActivity}:JAVA。 lang.NumberFormatException:ID 01-2 9 12:33:05.090:E/AndroidRuntime(29585):在android.app.ActivityThread.deliverResults(ActivityThread.java:2553) 12月1日至29日:33:05.090:E/AndroidRuntime(29585):在android.app .ActivityThread.handleSendResult(ActivityThread.java:2595) 12月1日至29日:33:05.090:E/AndroidRuntime(29585):在android.app.ActivityThread.access $ 2000(ActivityThread.java:121) 12月1日至29日: 33:05.090:E/AndroidRuntime(29585):在android.app.ActivityThread $ H.handleMessage(ActivityThread.java:973) 12月1日至29日: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) 十二月1日至29日:3 3:05.090:E/AndroidRuntime(29585):在java.lang.reflect.Method.invokeNative(本機方法) 12月1日至29日:33:05.090:E/AndroidRuntime(29585):在java.lang.reflect.Method中.invoke(Method.java:507) 01-29 12:33:05.090:E/AndroidRuntime(29585):at 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) 12月1日至29日:33:05.090:E/AndroidRuntime(29585):在dalvik.system.NativeStart.main(本機方法) 12月1日至29日:33:05.090:E/AndroidRuntime(29585):java.lang.NumberFormatException:ID 12月1日至29日:33:05.090:致è/AndroidRuntime(29585):在java.lang.Long.parse(Long.java:353) 12月1日至29日:33:05.090:E/AndroidRuntime(29585):在java.lang.Long.pars eLong(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):at com.webpreneur_contactlist.WebpreneurActivity.onActivityResult(WebpreneurActivity.java:129) 01-29 12:33:05.090:E/AndroidRuntime(29585):at android.app.Activity.dispatchActivityResult(Activity。 java:3908) 01-29 12:33:05.090:E/AndroidRuntime(29585):at android.app.ActivityThread.deliverResults(ActivityThread.java:2549) 01-29 12:33:05.090:E/AndroidRuntime 29585):...11多

+0

你的logcat錯誤在哪裏? – GrIsHu

+0

你在哪一行得到Null POinter異常? – Piyush

+0

我在onactivityresult裏面的代碼中提到了這一點,在這一點上「String id = data.getStringExtra(DBHandler.Key_ID);」 – Shazar

回答

0

//你要分配ID只要

i.putExtra(DBHandler.Key_ID, c.getLong(c.getColumnIndex(DBHandler.Key_ID))); 

//和你得到的是作爲字符串

String id = data.getStringExtra(DBHandler.Key_ID); 

// DO這樣的下面一行

long id = data.getLongExtra(DBHandler.Key_ID); 
+0

long id = data.getLongExtra(DBHandler.Key_ID);是不可行的是據說增加一個是默認長期價值的參數 – Shazar