从小部件打开应用程序时返回堆栈导航不起作用

Posted

技术标签:

【中文标题】从小部件打开应用程序时返回堆栈导航不起作用【英文标题】:back stack navigation when opening the app from a widget is not working 【发布时间】:2018-05-26 17:37:04 【问题描述】:

我想在用户单击小部件中的产品时启动 DetailActivty

我使用的代码是这个。设置 PendingIntentTemplete

ProductWigetProvider.class

Intent detailActivityIntent = new Intent(context, ProductDetailActivity.class);
    TaskStackBuilder taskStackBuilder = TaskStackBuilder.create(context);
    taskStackBuilder.addParentStack(ProductDetailActivity.class);
    taskStackBuilder.addNextIntent(detailActivityIntent);

    PendingIntent pendingIntent = taskStackBuilder.getPendingIntent( 1,PendingIntent.FLAG_UPDATE_CURRENT);

    views.setPendingIntentTemplate(R.id.widget_list_view,pendingIntent);

和这个代码来设置fillInIntent ProductRemoteViewFactory.class

Intent fillInIntent = new Intent();
    fillInIntent.setData(uri);
    views.setOnClickFillInIntent(R.id.widget_list_item_container,fillInIntent);

我的清单是

<activity
        android:name=".ui.EditProductActivity"
        android:label="@string/title_activity_add_new_item"
        android:parentActivityName=".ui.ProductDetailActivity"
        android:theme="@style/AppTheme.NoActionBar">
        <meta-data
            android:name="android.support.PARENT_ACTIVITY"
            android:value="com.example.dharmaraj.inventorymanager.ui.ProductDetailActivity" />
    </activity>

当我从小部件打开 DetailActivty,然后按回时,应用程序关闭而不打开主 CatalogActivty。

【问题讨论】:

【参考方案1】:

尝试类似于以下代码的代码(旨在从通知中启动详细信息活动):

Intent backIntent = new Intent(context, MainActivity.class);
        backIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);

Intent action = new Intent(context, DetailActivity.class);

PendingIntent operation =
                PendingIntent.getActivities(this, 0, new Intent[] backIntent, action, PendingIntent.FLAG_CANCEL_CURRENT);

希望有帮助!

【讨论】:

是的,它成功了!你能解释一下它为什么起作用以及我的代码有什么问题吗?

以上是关于从小部件打开应用程序时返回堆栈导航不起作用的主要内容,如果未能解决你的问题,请参考以下文章

可扩展的浮动操作按钮(使用堆栈)在颤动中不起作用

导航 PopUpToInclusive 不起作用?重新打开应用程序时,它会打开登录片段而不是电子邮件登录片段

从小部件单击启动 ViewController 的问题

从小部件打开主机应用程序时未调用 AppDelegate 函数(今日扩展)

Android应用模拟时钟小部件不起作用

如何使用多个导航器