3

我试图将 AsyncTask 中的字符串传递给 AsyncTask.onPostExecute 中的新 Activity:

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) this启动 AsyncTask 并传入context构造函数的 MainActivity 中的位置。

在 DisplayResponsegetIntent().getStringExtra("package_name.DisplayResponse.response")中总是null

如果我使用只有一个字符串的简单 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 中使用字符串:

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

所以问题是为什么第一种方法使用putExtra, getStringExtra失败,而第二种方法使用 Parcelable 工作?

4

0 回答 0