安卓的intent报出空指针异常

当使用intent的时候报出NullPoiterException,具体是在调用这行代码的时候:

int posizione2 =Integer.parseInt((getIntent().getExtras().getString(Intent.EXTRA_TEXT)));

请多指教!谢谢

private void aggiungiImm(View arg1, int arg2) {
    Intent i=newintent(Intent.ACTION_PICK,ContactsContract.Contacts.CONTENT_URI);
    i.putExtra(Intent.EXTRA_TEXT, Integer.toString(arg2));
    startActivityForResult(i, PICK_REQUEST);    
}    

@Override
protected void onActivityResult(int requestCode, int resultCode,Intent data) {
    Uri contactData=null;
    if (requestCode==PICK_REQUEST) {
    if (resultCode==RESULT_OK) {
    contactData=data.getData();                     
    int posizione2 =Integer.parseInt((getIntent().getExtras().getString(Intent.EXTRA_TEXT)));

错误是不是和intent是隐式有关?

别用:

int posizione2 =Integer.parseInt((getIntent().getExtras().getString(Intent.EXTRA_TEXT)));

试试:

Bundle extras = getIntent().getExtras();
if (extras==null) {
  Log.e( "", "No extras provided" );
  return;
}

String myText = extras.getString(Intent.EXTRA_TEXT);
if (myText==null) {
  Log.e( "", "No text provided" );
  return;
}

int posizione2 = Integer.parseInt(myText);

可以看到是什么引起异常。

返回的text在intent传递到函数会有效,所以还应该加上这行代码:

int posizione2 = Integer.parseInt(data.getString(Intent.EXTRA_TEXT));

getIntent()方法可以帮你启动那个的Activity,

getExtras返回了空。而且不能用getIntent(),应该用data.
你可以直接用data.getStringExtra获得结果。