Запуск MainActivity по мере того, как новое намерение нарушает его представления о кликах, запускающих новые намерения Android - PullRequest
0 голосов
/ 09 октября 2018

Я хочу знать, почему 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 из предыдущих сессий, или он всегда очищается?

...