Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.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 为什么我不能从推送通知意图触发的其他活动导航回原始活动?_Android_Push Notification - Fatal编程技术网

Android 为什么我不能从推送通知意图触发的其他活动导航回原始活动?

Android 为什么我不能从推送通知意图触发的其他活动导航回原始活动?,android,push-notification,Android,Push Notification,我的应用程序有两个活动:一个主要活动和一个详细活动。当我单击main上的一个按钮时,它会生成一个推送通知,当单击该按钮时,会显示详细信息页面 问题是,我不相信我已经配置了任何东西来建议活动应该使用标准以外的任何其他启动属性打开,也没有设置任何标志来建议我的活动以不同的方式打开。但是,当单击通知并打开新活动时,当我单击“上一步”按钮时,我将返回到主屏幕,并且不再有可用的活动任务 我通过实验注意到,如果我将通知触发的意图引导回主活动,而不是像我预期的那样操作细节活动。我可以单击主活动第一个实例上的按

我的应用程序有两个活动:一个主要活动和一个详细活动。当我单击main上的一个按钮时,它会生成一个推送通知,当单击该按钮时,会显示详细信息页面

问题是,我不相信我已经配置了任何东西来建议活动应该使用标准以外的任何其他启动属性打开,也没有设置任何标志来建议我的活动以不同的方式打开。但是,当单击通知并打开新活动时,当我单击“上一步”按钮时,我将返回到主屏幕,并且不再有可用的活动任务

我通过实验注意到,如果我将通知触发的意图引导回主活动,而不是像我预期的那样操作细节活动。我可以单击主活动第一个实例上的按钮来触发通知,单击该通知来调出主活动的第二个实例,然后按back返回到主活动的原始实例。它甚至具有原始文档中表示的正确的细节状态(一个文本框,其中填充了我提供的用于触发第一次通知的内容)

我还发现,如果我将触发细节活动的意图定向,但将与该活动相关联的关联设置为其他活动,则只需创建一个新任务,将该活动作为与该任务相关联的唯一活动即可。但这不是我想要的,也不是我认为应该发生的

编辑:我添加了一个按钮,通过一个标准意图将我带到详细信息活动。这正是我们想要的。我还向details活动添加了一个按钮,该按钮生成对主活动的通知,操作逻辑与主活动上的按钮相同,该按钮触发通知以转到details活动,除非更改了intent类。单击此按钮将生成通知,并按标准将主活动推送到已经存在的任务堆栈上

因此,这个问题似乎与未决意图所针对的细节活动有关,但我还没有弄清楚到底是什么,在android网站上关注细节没有任何帮助(尽管这很明显,因为这是我最初的出发点)

代码:

生成推送通知(在主活动上找到)

Android清单详细信息(用于证明)


您可以像这样覆盖onBackPressed():

public void onBackPressed()  
{  
    this.startActivity(new Intent(DetailActivity.this,MainActivity.class));  
    return;  
}  
如果您希望主活动看起来与默认活动不同,您仍然可以通过intent传递一些数据,并使用以下方式显示:

详细活动

intent.putExtra(String key, Object data);
intent.getExtra(String key);
主要活动

intent.putExtra(String key, Object data);
intent.getExtra(String key);

您可以像这样覆盖onBackPressed():

public void onBackPressed()  
{  
    this.startActivity(new Intent(DetailActivity.this,MainActivity.class));  
    return;  
}  
如果您希望主活动看起来与默认活动不同,您仍然可以通过intent传递一些数据,并使用以下方式显示:

详细活动

intent.putExtra(String key, Object data);
intent.getExtra(String key);
主要活动

intent.putExtra(String key, Object data);
intent.getExtra(String key);

因此,虽然我没有完全理解这个bug,但我发现这个问题与两件事有关。我使用的AVD和活动名称。在最初的AVD上,我将活动名称从ActivityDetail更改为ActivityDetail2,这解决了整个问题。当创建第三个活动时,我意识到活动出了问题,但没有问题。不幸的是,在重新更改名称(Android studio中的shift+f6)后,问题再次出现。困惑的是,我删除了AVD(不得不重新安装android studio来修复emulator:process因错误代码0错误而失败),并创建了一个具有不同手机类型和不同版本android的新版本。然后,我可以运行带有活动名称“ActivityDetail”的应用程序,但问题没有发生

我也无法在原始AVD上重新创建问题。这告诉我,AVD上的某些内容与特定的活动名称相关联,以某种方式通过应用程序调用进行设置,我可能在遵循官方android通知页面上的指南时进行了设置:


不幸的是,我只能肯定地说。这就不需要仅仅为了解决这个问题而覆盖on-back键操作。

因此,虽然我没有完全理解这个错误,但我发现这个问题与两件事有关。我使用的AVD和活动名称。在最初的AVD上,我将活动名称从ActivityDetail更改为ActivityDetail2,这解决了整个问题。当创建第三个活动时,我意识到活动出了问题,但没有问题。不幸的是,在重新更改名称(Android studio中的shift+f6)后,问题再次出现。困惑的是,我删除了AVD(不得不重新安装android studio来修复emulator:process因错误代码0错误而失败),并创建了一个具有不同手机类型和不同版本android的新版本。然后,我可以运行带有活动名称“ActivityDetail”的应用程序,但问题没有发生

我也无法在原始AVD上重新创建问题。这告诉我,AVD上的某些内容与特定的活动名称相关联,以某种方式通过应用程序调用进行设置,我可能在遵循官方android通知页面上的指南时进行了设置:


不幸的是,我只能肯定地说。这样,就不必为了解决这个问题而覆盖on back键操作。

我认为这不是一个好主意。android官方网站表明我对后退按钮的理解是正确的,因此不需要覆盖功能,也不应该建议覆盖功能,因为它会在不同的场景中导致问题。是的,它不是,但是,嘿,它做了一段时间的工作,只是为了不让你慢下来