0

我一直在将这个程序作为一项任务进行工作,我一直试图回答这个问题,对我来说应该只是:

Bundle data = getIntent().getExtras();

但这是不正确的!下面的代码和下面的问题是导致我得到这个答案的原因。

import android.app.Activity;
import android.os.Bundle;

public class HelloWorld extends Activity {

    /** Called when the activity is first created. */
   @Override
   public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
   }
  }

我需要获取Intent该类将从中接收的对象HelloWorldActivity。所以,

声明一个名为 data 的 Bundle 类型的新变量,并为其分配getIntent().getExtras()从此类调用的值。

所以我搜索并搜索了我不明白的答案。

我再次回答:

Bundle data = getIntent().getExtras();

这是不正确的。有人可以向我解释我错过了什么吗?谢谢

4

1 回答 1

1

您假设启动 Activity 的传入 Intent 在其扩展数据中包含一个 Bundle。也就是说,HelloWorldActivity 必须执行以下操作:

意图 sendIntent = newIntent(this, HelloWorld.class); // 或其他方式将 Intent 指向正确的 Activity Bundle sendBundle = new Bundle(); // 将数据放入 Bundle 的一些示例 // 注意键应该使用包前缀。sendBundle.putString("com.example.android.myapp.HELLOWORLD_KEY","Hello, World"); // 等等 sendIntent.putExtras(sendBundle); 开始活动(发送意向);

如果你这样做,那么在 HelloWorld 中你可以调用

捆绑数据 = getIntent().getExtras();

这将返回您放入 sendBundle 的内容。

即使我使用显式 Intent,我通常也会将操作添加到传出 Intent。这使我可以在其他地方检查传入的 Intent 以获取正确的操作。在尝试对其进行操作之前,我还测试了 Intent 中的扩展数据不为空。

最后,记住语句

捆绑数据 = getIntent().getExtras();

应该在 onCreate();

于 2013-02-24T03:49:40.807 回答