我是 android 开发新手。按下返回按钮时出现问题。
如果我使用完成,特定视图会被破坏。下次我按下返回按钮时,应用程序结束。我需要带有后退按钮的受控导航
例如,这些是我的活动 A、B、C、D
我的流程应该是
从活动 A 到 B 到 C 到 D 到 A
并且用户可以在 D 到 A 之间导航
但是当用户从 D 导航到 A
如果他再次按下后退按钮
它不应导航到任何其他活动
请帮忙
我是 android 开发新手。按下返回按钮时出现问题。
如果我使用完成,特定视图会被破坏。下次我按下返回按钮时,应用程序结束。我需要带有后退按钮的受控导航
例如,这些是我的活动 A、B、C、D
我的流程应该是
从活动 A 到 B 到 C 到 D 到 A
并且用户可以在 D 到 A 之间导航
但是当用户从 D 导航到 A
如果他再次按下后退按钮
它不应导航到任何其他活动
请帮忙
You want to navigate to Activity A from D. So, you can call Activity A from D as below,
Intent intent = new Intent(this, A.class);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); //clears B and C from stack.
startActivity(intent);
试试这个只需在活动A中输入它,就像它一样,没什么可改变的
@Override public void onBackPressed() {
}
我希望一个活动在后按时保持其状态,只是在开始其他活动之前不要调用 finish() 方法。android:noHistory="true"
鉴于清单文件中没有条目,当您按下返回按钮时,Android 会处理上一个活动
只需覆盖
@Override
public void onBackPressed() {
super.onBackPressed();//comment this if you want to implement your own logic
//Do whatever you like
}
在你的 A 活动上并开始 D 活动。
在 D 中覆盖 onBackPress
@Override
public void onBackPressed()
{
super.onBackPressed();
Intent i = new Intent(this, A.class);
i.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(i);
}
每当从另一个活动调用该活动时,调用活动都会根据活动生命周期进入堆栈。当您从 A 移动到 B 时,A 被存储到堆栈中并且 B 被打开。当您按下按钮时,您想去(A 到 B 到 C 到 D 到 A),(D 到 A 或反之亦然)但不是从 B 到 A 或 C 到 B 或 D 到 C 或 A 到 D。
当您从 B 调用活动 C 时,也调用 finish() 来销毁 B,类似地,当您从 C 调用 D 来销毁 C 时,您不能后退。这将限制您的流量。
A类扩展活动{
//按钮点击
Intent intent=new Intent(A.this,B.class);
startactivity(intent);
}
B类扩展活动{
//按钮点击
Intent intent=new Intent(B.this,C.class);
startactivity(intent);
finish();
}
C类扩展活动{
//按钮点击
Intent intent=new Intent(C.this,D.class);
startactivity(intent);
finish();
}
D类扩展活动{
//按钮点击
Intent intent=new Intent(D.this,A.class);
startactivity(intent);
}
这样当你从A到B -> A存入栈,B到C -> B被销毁(使用finish),C到D -> C被销毁,你可以直接从D到A使用后退按钮。如果你从D到A后再次按下返回按钮,它将来到D,再次按下返回将到达A(第一个活动启动。)然后再次按下返回后应用程序将结束。