用意图传递数据

时间:2012-02-03 12:07:51

标签: android android-intent bundle

最近我一直在玩意图和捆绑。我以为我让他们想通了,但是当我想知道你必须使用bundle时,我一直遇到问题我知道你必须使用bundle,但是当我尝试实现一个简单的程序来测试它时,我一直得到一个空指针异常。我创建的程序只是一个调用服务来创建字符串的活动,然后该活动应该能够获取服务创建的字符串并将其烘烤。有谁知道我在这里做错了什么,为任何有帮助的人欢呼。这是下面的代码

活动类

MyIntent = new Intent(this, GetLocation.class);
startService(MyIntent);

bundle = MyIntent.getExtras();  
test = bundle.getString("location");
Context context = getApplicationContext();
CharSequence text = test;
int duration = Toast.LENGTH_LONG;

Toast toast = Toast.makeText(context, text, duration);
toast.show();

服务类

  Intent Int1 =new Intent(this,MapMock.class); 
   Bundle  b = new Bundle();
   String yeah = new String();
   yeah = "hello";
   b.putString("location", yeah);
   Int1.putExtras(b);

2 个答案:

答案 0 :(得分:2)

服务无法以这种方式运作。

您通过startService发送给服务的意图不会更新并返回到启动它的活动。

我认为你需要一个绑定服务。 阅读here以了解更多信息。这允许您调用函数并将值传递回活动。

答案 1 :(得分:0)

看起来您正在访问未投入意图的意向日期,

就像您从服务中启动活动,并使用传递一些数据一样:

Intent myIntent=getIntent();
bundle = MyIntent.getExtras();  
test = bundle.getString("location");
Context context = getApplicationContext();
CharSequence text = test;
int duration = Toast.LENGTH_LONG;

Toast toast = Toast.makeText(context, text, duration);
toast.show();