0

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

编辑:到目前为止没有解决方案。难道问题与这是一个隐式意图有关吗?

4

2 回答 2

3

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

于 2012-12-13T17:11:46.917 回答
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消息,则意味着您没有在计算它的活动中正确返回结果。

于 2012-12-13T17:52:14.240 回答