2017-05-24 16 views
0
意図

からNULL値を取得しています「btn_navSimilarColor」buttonClickで - 私はstartActivityForResultでBへの呼び出しを行いました。カメラとギャラリーを使用するためのAの中にはすでにいくつかの意図があり、前のアクティビティから受け取ったインテントデータがあります。アクティビティBでは私は私は2つの活動を持っている受信

:私はアクティビティAに意図余分を返送しています)(のonCreate()内とasyncTaskのonPostExecuteにasyncTaskコールを作っ

活動A:

public class A extends Activity 
{ 
... 
@Override 
public void onCreate(Bundle savedInstanceState) 
{ 
    ... 
    Bundle extras = getIntent().getExtras(); 
    if (extras != null) { 
     edtTxtColorCode.setText(extras.getString("xtra_selectedColor")); 
    } else { 
     Toast.makeText(this, "There was a problem in the response!", Toast.LENGTH_SHORT).show(); 
    } 
} 


public void buttonOnClick(View view) 
{ 
    switch (view.getId()) 
    { 
     case R.id.btnCamera: 
      startActivityForResult(new Intent(MediaStore.ACTION_IMAGE_CAPTURE), FLAG_CAMERA); 

      break; 

     case R.id.btnGallery: 
      startActivityForResult(
        new Intent(Intent.ACTION_PICK, android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI), FLAG_GALLERY); 
      break; 

     case R.id.btn_navSimilarColor: 
      Intent intnt_similar = new Intent(A.this, B.class); 
      intnt_similar.putExtra("xtraColor", edtTxtColorCode.getText().toString()); 
      startActivityForResult(intnt_similar, FLAG_navSimilarColorAct); 

      break; 

     default: 
      break; 
    } 

} 


@Override 
public void onActivityResult(int requestCode, int resultCode, Intent data) { 
    Log.v("resultCode","="+resultCode); 
    if (resultCode == Activity.RESULT_OK) 
    { 
     mCursor = null; 
     if (requestCode == FLAG_GALLERY) 
      onSelectFromGalleryResult(data); 
     else if (requestCode == FLAG_CAMERA) 
      onCaptureImageResult(data); 
     else if(requestCode == FLAG_navSimilarColorAct) 
     { Bundle extras = getIntent().getExtras(); 
      String stt = extras.getString("intnt_similarColor"); 
      if (extras != null) 

edtTxtColorCode.setText(extras.getString("intnt_similarColor")); 
     } 
    } 
} 
} 

アクティビティB:

public class B extends Activity 
{ 
    @Override 
    public void onCreate(Bundle savedInstanceState) 
    { 
    .... 
    receiveIntent(); 
    new AsyncConver().execute(); 

    } 

    private void receiveIntent() { 
    Bundle extras = getIntent().getExtras(); 
    if (extras != null) 
     strIntentrecvdColor = extras.getString("xtraColor"); 
    else 
     Toast.makeText(this, "There was a problem in the response!", Toast.LENGTH_SHORT).show(); 
    } 

    class AsyncConvert extends AsyncTask<String, Integer, String> 
    { 
    ... 
    @Override 
    protected void onPostExecute(String s) 
    { 
     super.onPostExecute(s); 

     Custom_SimilarColorListAdapter gridAdapter = new Custom_SimilarColorListAdapter(SimilarColors.this, list_SimilarColors); 
     grdVw.setAdapter(gridAdapter); 

     grdVw.setOnItemClickListener(new AdapterView.OnItemClickListener() 
     { 
     @Override 
     public void onItemClick(AdapterView<?> parent, View v, int position, long id) 
     { 
      String str_colorCodeSimilar = ((TextView) v.findViewById(R.id.listrow_similar_code)).getText().toString(); 
      Toast.makeText(getApplicationContext(), "ID:: "+ str_colorCodeSimilar , Toast.LENGTH_SHORT).show(); 

      Intent retrnIntnt = new Intent(); 
      retrnIntnt.putExtra("intnt_similarColor", str_colorCodeSimilar); 
      setResult(RESULT_OK, retrnIntnt); 
      finish(); 

     } 
     }); 

     } 
    } 

} 

問題:

さて、問題は、私は活動Bにデータを取得していますということです - 私はすでに

Toast.makeText(getApplicationContext(), "ID:: "+ str_colorCodeSimilar , Toast.LENGTH_SHORT).show(); 

でそれをチェックしています。しかし活動AのonActivityResultで、私はその「intnt_similarColor」をバンドル余分なデータを取得していない午前として:

代わりに、私はonCreate()内にある "xtra_selectedColor"をバンドルしています。

なぜこれが起こっているのですか?アクティビティBから渡されたものではなく、以前のバンドルデータはどうして得られますか?

答えて

1

Bundle extras = data.getExtras();にGET文字列。 Bundle extras = getIntent().getExtras();を使用します。ここで、getIntent()は実際にクラスAの受信インテントです。

だから、あなたが使用する必要があります。

String stt = data.getStringExtra("intnt_similarColor"); 
2

変更あなたがonActivityResultからの受信データの意図からBundle extras = getIntent().getExtras();

関連する問題