我的活动导航有问题。我有3个活动。
1)ActivityA
是发票清单
2)ActivityB
是发票项目清单(发票明细)
3)ActivityC
是产品列表
当用户单击ActivityA
中的发票项目时,我将启动ActivityB
并显示发票详细信息。
当用户单击ActivityB
中的加号按钮时,我启动ActivityC
,用户可以将产品选择到发票中。
当用户单击ActivityC
中的BACK按钮时,ActivityC
完成,并且用户位于ActivityB
中。
好的,它可以运行,但是我需要:
当用户单击ActivityA
中的加号按钮时,然后创建发票并直接启动ActivityC
进行产品选择。 OK,我启动ActivityC
,用户可以选择产品。但是问题是,当用户单击ActivityC
中的“后退”按钮时,我需要导航回ActivityB
(以开具发票明细)而不是ActivityA
。我怎样才能做到这一点?
解决此问题的最佳方法是什么?
最佳答案
您只需覆盖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);
}
}
希望能有所帮助。