17

正如您在我的代码中看到的那样,我正在通过 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
}
4

10 回答 10

29

这应该是程序。

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

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");
}
于 2013-06-10T11:02:34.473 回答
25

嗨,我希望这段代码可以帮助你。

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");
于 2013-06-10T12:28:30.873 回答
2
if (getIntent().getExtras().getString("url") != null) {
        // retrieve the url
}

你必须检查空值

于 2013-06-10T10:58:37.443 回答
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");
于 2017-04-21T11:26:30.357 回答
0

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

并且还替换

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

if (getIntent().getExtras().getString("url") != null) {
        // retrieve the url
}
于 2013-06-10T11:23:53.700 回答
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") ;

然后从 yourbundle 中获取字符串

if (!yourbundle.getString("url").contains(null)) {
     // Do something
}
于 2014-05-10T17:40:31.183 回答
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

  }
于 2013-06-10T11:08:40.770 回答
0
  1. 意图 serviceIntent = new Intent(YourService.class.getName()); serviceIntent.putExtra("url", "www.google.com"); context.startService(serviceIntent);

    1. 当服务启动时,它的 onStartCommand() 方法将被调用,所以在这个方法中你可以从意图对象中获取值(url)

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

    字符串用户 ID = intent.getStringExtra("url");

    返回 START_STICKY;}

于 2015-08-19T08:19:57.683 回答
0

字符串值 = bundle.getString("request");

于 2015-08-16T14:01:27.337 回答
0

尝试在里面添加这个NotificationService.class

String url = getIntent().getStringExtra("url");
于 2018-01-31T22:23:19.467 回答