Передача значений через связку и получение ее значения в другой деятельности

Я передаю значение через 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
}

10 ответов

Это должна быть процедура.

Создайте новое намерение с помощью связки и начните задание.

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

Возьмите такой пакет в новом Activity внутри onCreate

Bundle extras = getIntent().getExtras();
String value;
if (extras != null) {
  value = extras.getString("key");
}

Привет, я надеюсь, что этот код поможет вам.

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");
if (getIntent().getExtras().getString("url") != null) {
        // retrieve the url
}

вы должны проверить нулевые значения

// положить значение в намерение, как это

    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");

Попробуйте добавить это внутри NotificationService.class:

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

Замещать startService(...) - > startActivity(...)

А также заменить

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

К

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

Попробуй это

 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

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

    1. Когда служба запускается, вызывается ее метод onStartCommand (), поэтому в этом методе вы можете извлечь значение (url) из объекта намерения

    2. public int onStartCommand (намерение намерения, флаги int, int startId) {

    String userID = intent.getStringExtra ("url");

    вернуть START_STICKY; }

Потому что вы положили свои струны в пучок

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
}

String value = bundle.getString("request");

Другие вопросы по тегам