导航到android中java代码中的父活动

时间:2017-06-13 11:39:35

标签: android android-layout android-intent android-manifest android-navigation

我在代码中创建了一个adapterview以及bottomnavigation视图。 这是我用于所有导航视图的父活动

<activity android:name=".activity.patient.painpoint.PainPointBackView"
           android:parentActivityName=".activity.patient.assessment.PatientAssessmentActivity" />  

这是我作为所有选项卡的parentActivity提供的适配器视图

[![适配器视图] [1]] [1]

这是我使用的标签之一,

[![标签视图] [2]] [2]

如何导航到父活动,即点击时的适配器视图&#34;评估&#34;选项卡视图中的图标。如果我使用onbackpressed(),它将转到另一个选项卡。我不需要使用intent调用,因为它是一个适配器,我需要再次传递所有值。是否有任何方式从java代码(PatientAssessmentActivity.class)调用父活动,如果我按工具栏后退按钮,它将导航到父活动。当我点击评估标签图标时,我需要这样做。

这是我用过的代码,

private void setupNavigationView() {
        BottomNavigationViewHelper.disableShiftMode(bottomNavigationView);
        Menu menu = bottomNavigationView.getMenu();
        MenuItem menuItem = menu.getItem(2);
        menuItem.setChecked(true);

        assessment = realm.where(Assessment.class).equalTo("patient_id", patientID).findFirst();
        Log.v(Constants.TAG, "addsdsds " + assessment);

        bottomNavigationView.setOnNavigationItemSelectedListener(new BottomNavigationView.OnNavigationItemSelectedListener() {
            @Override
            public boolean onNavigationItemSelected(@NonNull MenuItem item) {

                switch (item.getItemId()) {
                    case R.id.action_assessment:
                    **here i need to navigate to parent activity**
                        break;
                    case R.id.action_front:
                        Intent intent = new Intent(PainPointBackView.this, PainPointFrontView.class);
                        intent.putExtra("patient_id", assessment.getPatient_id());
                        intent.putExtra("assessment_id", assessment.getId());
                        startActivity(intent);
                        break;
                    case R.id.action_back:
                        break;
                    case R.id.action_left:
                        Intent intent2 = new Intent(PainPointBackView.this, PainPointLeftView.class);
                        intent2.putExtra("patient_id", assessment.getPatient_id());
                        intent2.putExtra("assessment_id", assessment.getId());
                        startActivity(intent2);
                        break;
                    case R.id.action_right:
                        Intent intent3 = new Intent(PainPointBackView.this, PainPointRightView.class);
                        intent3.putExtra("patient_id", assessment.getPatient_id());
                        intent3.putExtra("assessment_id", assessment.getId());
                        startActivity(intent3);
                        break;
                }

                return false;
            }
        });
    }

1 个答案:

答案 0 :(得分:1)

您可以尝试使用,

Intent intent = new Intent(getApplicationContext(), PatientAssessmentActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intent);

根据Android Doc,

  

FLAG_ACTIVITY_CLEAR_TOP如果设置,则启动的活动是   已经在当前任务中运行,而不是启动新任务   该活动的实例,其上的所有其他活动   将被关闭,这个意图将被传递到(现在在顶部)   旧活动作为新的意图

参考:Intent