android - Android- Activity 导航-LMLPHP

我的活动导航有问题。我有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);
    }
}


希望能有所帮助。

10-08 07:48