簡體   English   中英

Android Activity 意外 Activity 打開而不是更改 Fragment

[英]Android Activity unexpected Activity open instead of change Fragment

您好,當我直接打開帶有這些FragmentsStagesActivity )時,一切都會正確。 我想當我在Stages中切換Fragments之前打開另一個Activities時,問題就開始了。

我可以補充一點,每個 Activity 都有這樣的代碼:

@Override
public void onBackPressed() {
    Intent intent = new Intent(Info.this, MainActivity.class);
    intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
    intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK);
    intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
    intent.addFlags(Intent.FLAG_ACTIVITY_NO_HISTORY);
    startActivity(intent);
    finish();
    super.onBackPressed();
}

和切換片段看起來像這樣:

public void showFragment(int viewId) {
    getFragmentManager().popBackStack(null, FragmentManager.POP_BACK_STACK_INCLUSIVE);
    Fragment fragment = null;

    switch (viewId) {
        case R.id.navigation_stage_zero:
            if (bottomNaviView.getSelectedItemId() != R.id.navigation_stage_zero) {
                fragment = stageZeroFragment;
                newPosition = 0;
            }
            break;
        case R.id.navigation_stage_one:
            if (bottomNaviView.getSelectedItemId() != R.id.navigation_stage_one) {
                fragment = stageOneFragment;
                newPosition = 1;
            }
            break;
        case R.id.navigation_stage_two:
            if (bottomNaviView.getSelectedItemId() != R.id.navigation_stage_two) {
                fragment = stageTwoFragment;
                newPosition = 2;
            }
            break;
        case R.id.navigation_stage_three:
            if (bottomNaviView.getSelectedItemId() != R.id.navigation_stage_three) {
                fragment = stageThreeFragment;
                newPosition = 3;
            }
            break;
    }

    if (fragment != null) {
        if (startingPosition > newPosition) {
            getSupportFragmentManager()
                    .beginTransaction()
                    .setCustomAnimations(R.anim.slide_in_left, R.anim.slide_out_right)
                    .replace(R.id.content_frame, fragment).commit();
        }
        if (startingPosition < newPosition) {
            getSupportFragmentManager()
                    .beginTransaction()
                    .setCustomAnimations(R.anim.slide_in_right, R.anim.slide_out_left)
                    .replace(R.id.content_frame, fragment).commit();
        }

        startingPosition = newPosition;
    }
}

那么為什么有時在我切換片段時會打開 Activity(歷史記錄或此類緩存?)?

如果您之前的活動是 mainActivty,則不需要在 onBackPressed 中啟動另一個意圖,即可返回到 mainActivity

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM