android - 在页面干净地消失的android中单击通知后的向导?
问题描述
我有 3 页
- A 页 - 列出联系人
- 页面 B - 单击通知时弹出
- 页面 C - 点击页面 B 上的贪睡后弹出
我有这篇文章在技术上按要求工作,但现在我变得更加清晰,导致了一个后续问题。
所需的后退按钮行为
- 用户点击通知
- 用户登陆页面 B 并点击贪睡
- 用户点击后退按钮(这与我在另一篇文章中的答案的暗示不同)
- 期望:用户登陆页面 B,因此他可以选择其他
单击通知时用户在页面 A 上时的期望行为
- 用户点击通知
- 用户登陆页面 B 并点击贪睡
- 用户登陆页面 C 并点击 10 分钟
- 期望:页面 B 和 C 'finish()' 并登陆页面 A
如果用户根本不在我的应用程序中,则期望的行为
- 用户登陆页面 B 并点击贪睡
- 用户登陆页面 C 并点击 10 分钟
- 期望:页面 B 和 C 'finish()' 并返回到他们所在的任何应用程序
在回答了那个问题之后,我修改了我的代码以在按钮单击页面 B 时调用完成,但这会使页面消失。我想我需要延迟 B 页上的调用完成。 我想当用户单击 C 页上的 10 分钟按钮时我想。
finish();
previousActivity.finish();
这是错误的方法吗?以及如何获取上一个活动,以便我可以将其调用完成下一个活动,以便他可以调用它?还是我的想法全错了?
编辑:我确实找到this post
了,但现在只进入 android 一周就很神秘了。任何人都有关于这些东西的教程的链接?也许我需要一本书来进行更深入的研究。
解决方案
最简单的方法是你应该使用 B -> C 的 startActivityForResult
案例一:不需要手柄
案例 2 & 3:你处理十分钟如下
tenMinutes.setOnClickListener(new View.OnClickListener()
{
@Override
public void onClick(View v)
{
Intent returnIntent = new Intent();
returnIntent.putExtra("result", 1);
setResult(Activity.RESULT_OK,returnIntent);
finish();
}
});
现在在 B :
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == REQUEST_CODE) {
if(resultCode == Activity.RESULT_OK){
int result = data.getIntExtra("result", 0);
if (result == 1)
finish();
}
}
}
您也可以使用其他解决方案示例:对页面 C 使用片段或对话框等
推荐阅读
- spring-cloud-stream - 如何在消费者中获取消息标头
- linux - u-boot 在“解压缩/加载内核映像”处挂起
- c# - 如何同步读取和写入来自不同任务的 NetworkStream?
- c++ - 如何在文件处理中使用 for 循环获取多个输入?
- r - 在 ggplot 条形图中按组标准化
- matlab - 如何从 Matlab/gramm 中的神经脉冲发射图中绘制置信区间图?
- jenkins - 带有 Tycho 构建的 Jenkins Artifactory 插件
- apache-flink - Flink Operator 字数统计教程:控制台输出在哪里?
- python - 访问类之间的变量
- amazon-web-services - com.amazonaws.services.s3.model.AmazonS3Exception: Access Denied with valid was credentials