为什么我可以成功传递Parcelable但不能使用putExtra,getStringExtra

时间:2012-10-14 13:49:18

标签: android android-intent

我试图将AsyncTask中的String传递给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);
}

MainActivity中的context = (Context) this,它启动AsyncTask并在构造函数中传递context

在DisplayResponse中,getIntent().getStringExtra("package_name.DisplayResponse.response")始终为null

如果我使用一个简单的Parcelable只有一个String并从

传递
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工作的第二种方法呢?

0 个答案:

没有答案