2 annbnncnnd AnnBnnCnnD 于 2012.12.14 11:36 提问

安卓的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是隐式有关?

2个回答

Kakalapa1986
Kakalapa1986   2012.12.14 13:59
已采纳

别用:

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,

AnnBnnCnnD
AnnBnnCnnD 谢谢
5 年多之前 回复
cytown
cytown   2012.12.14 13:31

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

AnnBnnCnnD
AnnBnnCnnD 谢谢
5 年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!