Android:在Intent中使用Extras时出现NullPointerException

时间:2012-12-13 17:08:05

标签: android android-intent extras

当我尝试从意图中获取额外内容时,我得到一个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)));

EDITED: 到目前为止还没有解 可能是问题与这是一个隐含的意图吗?

有关

2 个答案:

答案 0 :(得分:3)

尝试使用data.getStringExtra(Intent.EXTRA_TEXT)

答案 1 :(得分:2)

而不是

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);

应该帮助你看看是什么给了例外......

顺便说一句,您返回的文本(如果该文本是从其他活动中获得的)将在传递给该函数的Intent中可用。所以你应该这样做:

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

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

getIntent()方法将为您提供调用活动已启动的意图。没有意图保存被调用活动的结果。

如果您收到No text provided消息,则表示您未在计算它的活动中正确返回结果。