通过bundle传递值并获取其他活动的值

时间:2013-06-10 10:57:32

标签: android android-intent

我正在通过Bundle传递价值,正如您在我的代码中看到的那样。
现在,我希望它在另一个活动onCreate()中的价值。我尝试了它的值,但它显示nullpointerexception。

请帮我解决问题。

Bundle bundle = new Bundle();
String url = "http://www.google.com";
bundle.putString("url", url);
Intent myIntent = new Intent(context, NotificationService.class);
myIntent.putExtras(bundle);
context.startService(myIntent);


获取价值代码:

if (!getIntent().getExtras().getString("url").contains(null)) {
        // Do something
}

9 个答案:

答案 0 :(得分:25)

这应该是程序。

使用bundle创建一个新的Intent并启动活动。

Intent i = new Intent(context, ActivityName.class);
i.putExtra("key", mystring);
startActivity(i);

在onCreate

中的新Activity中取这样的包
Bundle extras = getIntent().getExtras();
String value;
if (extras != null) {
  value = extras.getString("key");
}

答案 1 :(得分:22)

您好希望此代码可以帮助您。

Bundle bundle = new Bundle();
bundle.putString("name", "Android");
bundle.putString("iname", "iPhone");
Intent intent = new Intent(getApplicationContext(), MyActivity.class);
intent.putExtras(bundle);
startActivity(intent);

在MyActivity.class中

public Bundle getBundle = null;
getBundle = this.getIntent().getExtras();
String name = getBundle.getString("name");
String id = getBundle.getString("iname");

答案 2 :(得分:2)

if (getIntent().getExtras().getString("url") != null) {
        // retrieve the url
}

你必须检查空值

答案 3 :(得分:1)

//将值置于意图中

    Intent in = new Intent(MainActivity.this, Booked.class);
    in.putExtra("filter", "Booked");
    startActivity(in);

//从像这样的

中获取值
    Intent intent = getIntent();
    Bundle bundle = intent.getExtras();
    String filter = bundle.getString("filter");

答案 4 :(得分:0)

试试这个

 String url = "http://www.google.com";

Intent myIntent = new Intent(context, NotificationService.class);
myIntent.putExtras("url", url);
startActivity(myIntent);

和另一项活动就像

一样
Bundle extra = getIntent().getExtras();
if(extra != null) {
String value = extra.getString("url")
//use this value where ever you want

  }

答案 5 :(得分:0)

替换startService(...) - > startActivity(...)

并且还替换

if (getIntent().getExtras().getString("url").contains(null)) {
        // retrieve the url
}

if (getIntent().getExtras().getString("url") != null) {
        // retrieve the url
}

答案 6 :(得分:0)

因为您将字符串放在一个包中

Bundle youtbundle = new Bundle();
String url = "http://www.google.com";
yourbundle.putString("url", url);

然后将捆绑包作为意图的额外内容

Intent myIntent = new Intent(context, NotificationService.class);
myIntent.putExtras(yourbundle);
context.startService(myIntent);

在开始时你必须从附加内容中删除捆绑

Bundle yourbundle = getIntent().getExtras().getBundle("yourbundle") ;

然后从你的捆绑中获取字符串

if (!yourbundle.getString("url").contains(null)) {
     // Do something
}

答案 7 :(得分:0)

  1. Intent serviceIntent = new Intent(YourService.class.getName()); serviceIntent.putExtra(“url”,“www.google.com”); context.startService(serviceIntent);

    1. 当服务启动时,将调用onStartCommand()方法,因此在此方法中,您可以从intent对象中获取值(url)

    2. public int onStartCommand(Intent intent,int flags,int startId){

    3. String userID = intent.getStringExtra(“url”);

      返回START_STICKY; }

答案 8 :(得分:0)

尝试在NotificationService.class内添加此内容:

String url = getIntent().getStringExtra("url");