Android - 活动导航

时间:2018-03-15 09:53:23

标签: android android-activity navigation

enter image description here

我的活动导航有问题。我有3个活动。

1)ActivityA是发票清单

2)ActivityB是发票项目清单(发票明细)

3)ActivityC是产品清单

  • 当用户点击ActivityA中的发票项目时,我会启动ActivityB并显示发票明细。
  • 当用户点击ActivityB中的加号按钮时,我启动ActivityC,用户可以选择产品进入发票。
  • 当用户点击ActivityC中的“返回”按钮时,ActivityC结束,用户位于ActivityB

好的,它有用,但我需要:

当用户点击ActivityA中的加号按钮,然后创建发票并直接启动ActivityC进行产品选择。好的,我启动ActivityC,用户可以选择产品。但问题是,当用户点击ActivityC中的“返回”按钮时,我需要导航回ActivityB(发票明细)而不是ActivityA。我怎么能这样做?

这个问题的最佳解决方案是什么?

4 个答案:

答案 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();
}

希望这对你有用