Я хочу знать, почему Android не загружает мои действия.
У меня настроены намерения в RecyclerView в MainActivity
, которые запускают другое действие (Activity2
).В настоящее время это не проблема при открытии приложения и нажатии на эти элементы.
У меня есть виджет, который также настроен на открытие Activity2
.Он делает это правильно без каких-либо проблем с навигацией в обратном стеке, кроме случаев, когда приложение было закрыто.В этом случае виджет просто закрыл приложение вместо кнопки «Назад», переходя от Activity2
до MainActivity
.
Манифест объявляет обе операции как "SingleTop".
Чтобы исправить это, я добавил код в метод onBackPressed()
и добавил дополнительный пакет, чтобы узнать, запущен ли виджет или основной файл Activity2
,Теперь код будет начинать намерение для MainActivity
, если виджет запущен Activity2
из пустого / закрытого приложения, но onClicks для элементов больше не функционирует для запуска Activity2
в этом случае.
TLDR: IntentMainActivity
Это мой код, который завершает 2-е действие, если виджет запущен из мертвой активности.
if(mDidWidgetStart && isTaskRoot()) {
Log.d(TAG, "isTaskRoot and widget started");
Intent mainActIntent = new Intent(MediaPlayerActivity.this, MainMediaActivity.class);
startActivity(mainActIntent);
finish();
}
В моемВ манифесте оба действия объявлены с помощью android:launchMode:"singleTop"
.
Мой элемент onclick вызывается в элементе RV следующим образом:
if(...) {
ActivityOptionsCompat options = ActivityOptionsCompat.
makeSceneTransitionAnimation((Activity) v.getContext(),
holder.thumbnailView,
holder.thumbnailView.getTransitionName());
VideoParcelable ytVideo = (VideoParcelable)
Toast.makeText(mContext, "Intent launched",
Toast.LENGTH_SHORT).show();
Intent myIntent= new Intent(mContext,
MediaPlayerActivity.class);
myIntent.putExtra("video_object", video);
MyIntent.putExtras(options.toBundle());
mContext.startActivity(MyIntent);
//logging to determine values are present
Log.v(TAG, "mContext = " + mContext);
Log.v(TAG, "v.getContext() = " + v.getContext());
Log.v(TAG, "myIntent: " + myIntent);
}
Я знаю, что оператор if в приведенном выше коде и mContext верны, потому чтоСообщение Toast
появляется при нажатии на элемент, но намерение никогда не запускается.Журналы от неудачного клика возвращают ненулевые значения.
ДОБАВЛЕННЫЙ КОД ОБНОВЛЕНИЯ ВИДЖЕТА, ЗАПРОШЕННЫЙ В КОММЕНТАРИИ
private static RemoteViews getDefaultWidgetViews(Context context) {
RemoteViews remoteViews = new RemoteViews(context.getPackageName(), R.layout.video_widget);
Intent launchMainActivityIntent = new Intent(context, MainMediaActivity.class);
//set pending intent
PendingIntent appPendingIntent = PendingIntent.getActivity(context, 0, launchMainActivityIntent, PendingIntent.FLAG_UPDATE_CURRENT);
//sets actual click action on the widget layout view
remoteViews.setOnClickPendingIntent(R.id.video_widget_layout, appPendingIntent);
//return created remote views
return remoteViews;
}
ОБНОВЛЕНИЕ: После предоставленияи перезапустить проект позже, эта ошибка больше не проявляется.Я не изменил код ... Может ли это быть вызвано какой-то проблемой синхронизации синхронизации?Это не мог быть эмулятор, так как на моем телефоне были такие же результаты.
* обратите внимание на себя, снимок экрана и запечатлеть каждую деталь любой будущей странности, такой как этаКто-нибудь знает, если / где AS сохраняет старый вывод Logcat из предыдущих сессий, или он всегда очищается?