简体   繁体   English

ID为NULL的指针异常

[英]ID Giving NULL Pointer exception

I am trying to make a simple contact list app,when I tried to edit my contact by clicking on the phone list through activity for result, after editing when i pressed the save button it gives me null pointer exception by throwing " id=null ".i debug the application, when i clicked the contact for editing on the list it gets the id, but when ii saved the edit part it gives null to id. 我试图制作一个简单的联系人列表应用程序,当我尝试通过活动单击电话列表以获取结果来编辑联系人时,在编辑后按下“保存”按钮时,它会通过抛出“ id=null ”为我提供空指针异常.i调试应用程序,当我单击列表上的联系人进行编辑时,它将获得id,但是当ii保存了编辑部分时,它将id设置为null。 Here is source code: 这是源代码:

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;

            }
        }
    }
}

Here is my log cat////////// 这是我的日志猫///////////

01-29 12:33:05.070: W/dalvikvm(29585): threadid=1: thread exiting with uncaught exception (group=0x4001d578) 01-29 12:33:05.090: E/AndroidRuntime(29585): FATAL EXCEPTION: main 01-29 12:33:05.090: E/AndroidRuntime(29585): java.lang.RuntimeException: Failure delivering result ResultInfo{who=null, request=1, result=-1, data=Intent { (has extras) }} to activity {com.webpreneur_contactlist/com.webpreneur_contactlist.WebpreneurActivity}: java.lang.NumberFormatException: ID 01-29 12:33:05.090: E/AndroidRuntime(29585): at android.app.ActivityThread.deliverResults(ActivityThread.java:2553) 01-29 12:33:05.090: E/AndroidRuntime(29585): at android.app.ActivityThread.handleSendResult(ActivityThread.java:2595) 01-29 12:33:05.090: E/AndroidRuntime(29585): at android.app.ActivityThread.access$2000(ActivityThread.java:121) 01-29 12:33:05.090: E/AndroidRuntime(29585): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:973) 01-29 12:33:05.090: E/AndroidRuntime(29585): at android.os.Handler 01-29 12:33:05.070:W / dalvikvm(29585):threadid = 1:线程以未捕获的异常退出(group = 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 {(有附加项)}}到活动{com.webpreneur_contactlist / com.webpreneur_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):at 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): at android.os.Looper.loop(Looper.java:138) 01-29 12:33:05.090: E/AndroidRuntime(29585): at android.app.ActivityThread.main(ActivityThread.java:3701) 01-29 12:33:05.090: E/AndroidRuntime(29585): at java.lang.reflect.Method.invokeNative(Native Method) 01-29 12:33:05.090: E/AndroidRuntime(29585): at 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): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:636) 01-29 12:33:05.090: E/AndroidRuntime(29585): at dalvik.system.NativeStart.main(Native Method) 01-29 12:33:05.090: E/AndroidRuntime(29585): Caused by: 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.pars .dispatchMessage(Handler.java:99)01-29 12:33:05.090:E / AndroidRuntime(29585):at 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.invokeNative(本机方法)01-29 12:33:05.090:E / AndroidRuntime(29585):at 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):at dalvik.system.NativeStart.main(Native Method)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):位于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 more 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):位于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更多

//you are assigning id as long //您分配ID的时间很长

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

// and you are getting that as String //并且您将其作为String获取

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

//DO like this below line //像这样在行下

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM