我的活动导航有问题。我有3个活动。
1)ActivityA
是发票清单
2)ActivityB
是发票项目清单(发票明细)
3)ActivityC
是产品清单
ActivityA
中的发票项目时,我会启动ActivityB
并显示发票明细。 ActivityB
中的加号按钮时,我启动ActivityC
,用户可以选择产品进入发票。 ActivityC
中的“返回”按钮时,ActivityC
结束,用户位于ActivityB
。 好的,它有用,但我需要:
当用户点击ActivityA
中的加号按钮,然后创建发票并直接启动ActivityC
进行产品选择。好的,我启动ActivityC
,用户可以选择产品。但问题是,当用户点击ActivityC
中的“返回”按钮时,我需要导航回ActivityB
(发票明细)而不是ActivityA
。我怎么能这样做?
这个问题的最佳解决方案是什么?
答案 0 :(得分:1)
您只需覆盖onBackPressed
中的ActivityC
功能即可处理您的活动之间的转换。这是你如何做到的。
从ActivityC
启动ActivityB
时,请启动此类活动。
Intent intent = new Intent(this, ActivityC.class);
intent.putExtra("CallingActivity", "ActivityB");
startActivity(intent);
从ActivityC
启动ActivityA
时,您需要执行以下操作。
Intent intent = new Intent(this, ActivityC.class);
intent.putExtra("CallingActivity", "ActivityA");
startActivity(intent);
现在在您的ActivityC
中,您需要检查意图的值并将其保存在某处。然后处理onBackPressed
中的ActivityC
功能。
String callingActivity = null;
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.layout_activity_c);
Bundle bundle = getIntent().getExtras();
callingActivity = bundle.getString("CallingActivity", null);
}
@Override
public void onBackPressed() {
if(callingActivity != null && callingActivity.equals("ActivityB")) super.onBackPressed();
else {
Intent intent = new Intent(this, ActivityB.class);
startActivity(intent);
}
}
希望有所帮助。
答案 1 :(得分:0)
在这种情况下,从活动C开始活动B并完成活动C.
void startActivityB(){
Intent starter = new Intent(this, ActivityB.class);
startActivity(starter);
this.finish();
}
活动A仍将处于堆叠状态。
答案 2 :(得分:0)
这是我觉得可能适合您的解决方案。在活动C的背面按下..启动活动B的火灾意图..这可能对你有帮助..
如果这对您有用,请告诉我! 否则,您需要显示代码段..
答案 3 :(得分:0)
覆盖活动中的onBackpressed方法c 试试这个
@Override
public void onBackPressed() {
//code any action you want at here
Intent activityB= new Intent(ActivityC.this, ActivityB.class);
startActivity(activityB);finish();
}
希望这对你有用