Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/228.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-core/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从android tv推荐恢复活动_Android_Android Intent_Activity Lifecycle_Android Tv_Leanback - Fatal编程技术网

从android tv推荐恢复活动

从android tv推荐恢复活动,android,android-intent,activity-lifecycle,android-tv,leanback,Android,Android Intent,Activity Lifecycle,Android Tv,Leanback,我在使用Leanback Launcher的Android电视上管理推荐(通知)时遇到了一些问题 我在这里使用google示例来实现我自己的: 预期结果: 我正在进行我的活动“MainActivity”(带有网络视图) 我按HOME键,所以我在带地雷的Leanback发射器上 我按其中一个 恢复活动“MainActivity”,而不使用新的额外命令以新的意图重新创建它 实际上,在创建PendingEvent之前,不重新加载活动的情况下恢复活动效果良好: private PendingInte

我在使用Leanback Launcher的Android电视上管理推荐(通知)时遇到了一些问题

我在这里使用google示例来实现我自己的:

预期结果:

  • 我正在进行我的活动“MainActivity”(带有网络视图)
  • 我按HOME键,所以我在带地雷的Leanback发射器上
  • 我按其中一个
  • 恢复活动“MainActivity”,而不使用新的额外命令以新的意图重新创建它
实际上,在创建PendingEvent之前,不重新加载活动的情况下恢复活动效果良好:

private PendingIntent buildPendingIntent(Parcelable media, int id) {
        Intent detailsIntent = new Intent(this, MainActivity.class);
        detailsIntent.putExtra("media", media);
        detailsIntent.putExtra("id", id);

        TaskStackBuilder stackBuilder = TaskStackBuilder.create(this);
        stackBuilder.addParentStack(MainActivity.class);
        stackBuilder.addNextIntent(detailsIntent);

        return stackBuilder.getPendingIntent(0, PendingIntent.FLAG_UPDATE_CURRENT);
}
当前结果:

  • 我正在进行我的活动“MainActivity”(带有网络视图)
  • 我按HOME键,所以我在带地雷的Leanback发射器上
  • 我按其中一个
  • 我的活动接收“onNewIntent”事件的方式与我始终使用的媒体相同
这个解决方案不起作用,因为谷歌在对示例代码的评论中说:

// Ensure a unique PendingIntents, otherwise all recommendations end up with the same 
// PendingIntent

detailsIntent.setAction(movie.getId());
因此,为了区分所有建议,我必须使用ID设置操作,否则,它将始终是发送到我的活动的最后一个挂起内容。这是我目前的行为,我在“onNewIntent”中收到的意图(最后一个)中的“media”和“id”总是相同的,无论我点击哪个建议,我总是得到相同的意图

但是,如果我用“id”设置操作,则会重新创建活动“MainActivity”,因此恢复失败,我的webview的上下文将被清除。我的webview将被重新加载:(但我在额外的意图值中获得了良好媒体的良好意图

你有没有办法帮我达到我想要的行为

为了简化我的问题,如何在不重新加载活动的情况下,从具有良好挂起内容的推荐中恢复活动B


提前感谢您的帮助。

我找到了一个解决方案。我认为这不是一个好办法,但它对我的情况有效

PendingIntent pIntent = PendingIntent.getActivity(this, id, detailsIntent, PendingIntent.FLAG_UPDATE_CURRENT);
return pIntent;
因此,如果我用id设置“resquetCode”,那么Android会认为这是一个不同的活动,并在不重新创建新活动的情况下继续它