3

AsyncTask から AsyncTask.onPostExecute の新しいアクティビティに文字列を渡そうとしました。

protected void onPostExecute(String response) {
    Intent displayResponse = new Intent(context, DisplayResponse.class);
    displayResponse.putExtra("package_name.DisplayResponse.response", response);
    displayResponse.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);        
    context.startActivity(displayResponse);
}

context = (Context) thisAsyncTask を開始してコンストラクターに渡す MainActivity の場所context

DisplayResponsegetIntent().getStringExtra("package_name.DisplayResponse.response")では常にnull

String が 1 つだけの単純な Parcelable を使用し、それを

protected void onPostExecute(String response) {
    Intent displayResponse = new Intent(context, DisplayResponse.class);
    StringParcel sp = new StringParcel(response);
    displayResponse.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
    Bundle bundle = new Bundle();
    bundle.putParcelable("response", sp);
    displayResponse.putExtra("package_name.DisplayResponse.response", bundle);
    context.startActivity(displayResponse);
}

その後、DisplayResponse で String を使用できます。

Intent intent = getIntent();
Bundle extras = intent.getBundleExtra("package_name.DisplayResponse.response");
StringParcel sp = extras.getParcelable("response");
textView.setText(sp.parcelString);

putExtra, getStringExtra問題は、Parcelable を使用した 2 番目の方法が機能するのに、最初の方法が失敗するのはなぜですか?

4

0 に答える 0