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 に答える