2012-12-13 53 views
0

當我嘗試從意圖獲取額外的表單時,請收到NullPoiterException。 錯誤拋出確切當我打電話Android:在Intents中使用Extras時出現NullPointerException

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

編輯: 到目前爲止沒有解決方案。 難道這個問題與這是隱含意圖有關嗎?

+1

getStringExtra(String name) –

+0

這將永遠不會工作,直到您沒有在其他用戶返回'onActivityResult'的活動中使用'setResult'活動 –

回答

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

應該幫助你看到什麼是給予例外...

由方式,您返回的文本(如果該文本是來自其他活動的結果)將是AVA在傳遞給函數的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消息,則表示您沒有在計算該消息的活動中正確返回結果。

+0

對不起,我改正了自己。結果是「沒有額外提供」... –

+1

查看答案結束:'int posizione2 = Integer.parseInt(data.getString(Intent.EXTRA_TEXT));' –

3

嘗試使用data.getStringExtra(Intent.EXTRA_TEXT)

+1

'getIntent()'從未在'onActivityResult'內部工作,因爲數據總是來回到最後一個參數'意圖數據' –

+0

對不起,不起作用。 –

相關問題