Нужно чтобы при нажатии на оповещение с определенным текстом открывалась определенная вкладка viewPager, но как это реализовать?
private void showNotification(String title, String body) {
int a = new Random().nextInt();
array.add(a);
resultIntent = new Intent(this, MyFragment.class);
int b = Integer.parseInt(page.replaceAll("[\\D]", ""));
resultPendingIntent = PendingIntent.getActivity(this, 1, resultIntent, PendingIntent.FLAG_UPDATE_CURRENT);
builder = (NotificationCompat.Builder) new NotificationCompat.Builder(this)
.setSmallIcon(R.mipmap.ic_launcher)
.setContentTitle(title)
.setContentText(body)
.setContentIntent(resultPendingIntent);
notification = builder.build();
notificationManager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
notificationManager.notify(a, notification);
list.add(b+":"+a);
System.out.println("Notification "+list);
}
Нужно добавить action:
private void showNotification(String title, String body) { int a = new Random().nextInt();
array.add(a);
resultIntent = new Intent(this, MyFragment.class);
int b = Integer.parseInt(page.replaceAll("[\\D]", ""));
resultPendingIntent = PendingIntent.getActivity(this, 1, resultIntent, PendingIntent.FLAG_UPDATE_CURRENT);
builder = (NotificationCompat.Builder) new NotificationCompat.Builder(this)
.setSmallIcon(R.mipmap.ic_launcher)
.setContentTitle(title)
.setContentText(body)
.setContentIntent(resultPendingIntent);
builder.addAction(
R.drawable.ic_icon,
"open",
PendingIntent.getActivity(
context,
requestCode,
Intent(this, YourActivity.class).putExtra(YourEnum.PAGE_STRING.getName(), yourPage),
PendingIntent.FLAG_UPDATE_CURRENT
)
)
notification = builder.build();
notificationManager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
notificationManager.notify(a, notification);
list.add(b+":"+a);
System.out.println("Notification "+list);
}
Идея следующего характера, вы в нотификашку добавляете PendingIntent, в него добавляете интент с вашей активностью и добавляете ту страницу, которую необходимо открыть, а в активности ловите данный интент, и открываете нужную страницу. Создаёте слушателя и через него устанавливаете нужную страницу. Внимание, там есть три разных слушателя, зависит от версии ViewPager:
val listener = object : ViewPager.OnPageChangeListener {
override fun onPageScrollStateChanged(state: Int) {
}
override fun onPageScrolled(
position: Int,
positionOffset: Float,
positionOffsetPixels: Int
) {
}
override fun onPageSelected(position: Int) {
)
}
}
}
onCreate {
val page = intent.getStringExtra(YourEnum.PAGE_STRING.getName())
viewPager.setOnPageChangeListener(viewPagerListener)
//после настройки и установки адаптера (тоесть добавления данных в адаптер) и вызова adapter.notifyDataSetChanged(), если после изменения адаптера не вызовете и будете устанавливать страницу, получите креш
listener.onPageSelected(page) //учитывайте что страницы идут с нуля, если выше не учтено, используйте page-1. Установку страницы я например делаю в коллбеке, который добавляет данные в адаптер
}
P.S. Ссори, давно не делал на джаве, потому Котлин. Тут ничего нет страшного, разберётесь
Это не совсем то, что Вам надо, но все же, оставлю, вдруг надо будет потом. При нажатии на оповещение открывается приложение, а точнее MainActivity. Можно вписать этот код в начальный класс
if (intent.extras != null) {
for (id in intent.extras!!.keySet()) {
val id_value = intent.extras!!.get(id)
if (id.equals("id")) {
val intent = Intent(applicationContext, CurrentNews::class.java)
intent.putExtra("id", id_value.toString())
startActivity(intent)
}
}
}
Вы отправляете оповещение с текстом news и id конкретной новости, к примеру. При нажатии по оповещению открывается приложение. Получаем news + id и открываем конкретную активити. Можно создать новую активити (такую же, как фрагмент, который Вам нужен), и при запуске заполнить его данными. Или же вставить в него фрагмент, который во ViewPager.
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Хотите улучшить этот вопрос? Обновите вопрос так, чтобы он вписывался в тематику Stack Overflow на русском