Передача значений через связку и получение ее значения в другой деятельности
Я передаю значение через 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
}
Intent serviceIntent = new Intent(YourService.class.getName()); serviceIntent.putExtra("url", "www.google.com"); context.startService(serviceIntent);
Когда служба запускается, вызывается ее метод onStartCommand (), поэтому в этом методе вы можете извлечь значение (url) из объекта намерения
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
}