2014-09-01 3 views
0

나는이 코드를 사용하여 뒤로 버튼을 눌렀을 때 이전 활동을 다시로드하지만 내 앱이 충돌합니다.이 경우 null 포인터 예외가 발생합니다. 여기서 문제가 될 수있는 것은 무엇입니까?다시 액티비티를 다른 액티비티에서 다시로드하는 방법

@Override 
public boolean onKeyDown(int keyCode, KeyEvent event){ 
    keyCode= KeyEvent.KEYCODE_BACK; 
    if (keyCode == KeyEvent.KEYCODE_BACK) { 
     Intent i=getIntent(); 
     final Bundle b = i.getExtras(); 
     Intent in = new Intent(this,UserProductActivity.class); 
     in.putExtra("id", Integer.parseInt(b.get("id").toString())); 
     in.putExtra("itemname", b.get("itemname").toString()); 
     in.putExtra("amt", b.get("amt").toString()); 
     in.putExtra("clientCode", b.get("code").toString()); 
     in.putExtra("day", b.get("day").toString()); 
     setResult(0,in); 
     return true; 
    } 
    return super.onKeyDown(keyCode, event); 
} 

로그 캣

09-01 10:46:32.656: E/AndroidRuntime(4356): FATAL EXCEPTION: main 
09-01 10:46:32.656: E/AndroidRuntime(4356): java.lang.NullPointerException 
09-01 10:46:32.656: E/AndroidRuntime(4356):  at com.example.senditem.UserItemDetailActivity.onKeyDown(UserItemDetailActivity.java:139) 
09-01 10:46:32.656: E/AndroidRuntime(4356):  at android.view.KeyEvent.dispatch(KeyEvent.java:2641) 
09-01 10:46:32.656: E/AndroidRuntime(4356):  at android.app.Activity.dispatchKeyEvent(Activity.java:2393) 
09-01 10:46:32.656: E/AndroidRuntime(4356):  at com.android.internal.policy.impl.PhoneWindow$DecorView.dispatchKeyEvent(PhoneWindow.java:2023) 
09-01 10:46:32.656: E/AndroidRuntime(4356):  at android.view.ViewRootImpl.deliverKeyEventPostIme(ViewRootImpl.java:4118) 
09-01 10:46:32.656: E/AndroidRuntime(4356):  at android.view.ViewRootImpl.handleImeFinishedEvent(ViewRootImpl.java:4061) 
09-01 10:46:32.656: E/AndroidRuntime(4356):  at android.view.ViewRootImpl$ViewRootHandler.handleMessage(ViewRootImpl.java:3144) 
09-01 10:46:32.656: E/AndroidRuntime(4356):  at android.os.Handler.dispatchMessage(Handler.java:107) 
09-01 10:46:32.656: E/AndroidRuntime(4356):  at android.os.Looper.loop(Looper.java:194) 
09-01 10:46:32.656: E/AndroidRuntime(4356):  at android.app.ActivityThread.main(ActivityThread.java:5400) 
09-01 10:46:32.656: E/AndroidRuntime(4356):  at java.lang.reflect.Method.invokeNative(Native Method) 
09-01 10:46:32.656: E/AndroidRuntime(4356):  at java.lang.reflect.Method.invoke(Method.java:525) 
09-01 10:46:32.656: E/AndroidRuntime(4356):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:837) 
09-01 10:46:32.656: E/AndroidRuntime(4356):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:604) 
09-01 10:46:32.656: E/AndroidRuntime(4356):  at dalvik.system.NativeStart.main(Native Method) 
+0

UserItemDetailActivity.java에서 139 행에있는 내용 –

+0

'startActivityForResult'를 사용하고 있습니까 ?? –

+0

예 내 의도로 데이터를 전달하기 때문에 이전 액티비티에서 startActivityForResult를 사용하고 있습니다. 원하는 것은 지난 액티비티의 데이터를 이전 액티비티로 되돌려 놓고 setResult를 사용하는 것입니다. – phoenix

답변

0

난 당신이 b.get()를 쿼리하고있는 번들에 존재하지 않는 키 중 하나를 상상하는 것

+0

yah.I 실제로 그것을 의심하고 다른 키를 제거하지만 여전히 null 포인터 예외가 발생합니다. – phoenix

0
  private String id = ""; 
     private String itemname = ""; 
     private String amt = ""; 
     private String code = ""; 
     private String day = ""; 
    @Override 
public boolean onKeyDown(int keyCode, KeyEvent event){ 
keyCode= KeyEvent.KEYCODE_BACK; 
if (keyCode == KeyEvent.KEYCODE_BACK) { 

    Intent in = new Intent(getApplicationContext(),UserProductActivity.class); 
    //eg.if you id,itemname,amt,code,day from EditText 
     // edtid = (EditText) findViewById(R.id.edtId);etc.. 

     this.id = edtid.getText().toString(); 
     this.itemname = edtitemname.getText().toString(); 
     this.amt = edtamt.getText().toString(); 
     this.code = edtcode.getText().toString(); 
     this.day = edtday.getText().toString(); 
    in.putExtra("id", this.id); 
    in.putExtra("itemname", this.itemname); 
    in.putExtra("amt", this.amt); 
    in.putExtra("clientCode", this.code); 
    in.putExtra("day", this.day); 
    startActivity(in); 
    } 
return super.onKeyDown(keyCode, event); 
} 

//UserProductActiviy.class

Bundle extras = intent.getExtras(); 
    String id = extras.getString("id");ect... 
관련 문제