0

나는 간단한 문제가 있습니다. 내 문제는 내가이 개 활동을해야한다는 것입니다 :다른 활동에서 이전 조각으로 돌아 가기

  • 활동 활성의
  • 활동 B

내가 4 ~ 5 개 조각을 표시합니다. 그것이 주요 활동 (탐색 드로어)이므로 4-5 조각을 표시합니다.

모든 조각에서 활동 B으로 리디렉션됩니다.

그러나 내가 활동 B에서 돌아 오면 마지막으로 열린 조각을 표시하고 싶습니다.

이제 기본 조각 인 첫 번째 조각이 직접 열립니다. 사용자가 첫 번째 활동으로 돌아 왔을 때 마지막으로 열린 단편을 열고 싶습니다. 첫 번째 활동이 두 번째로 변경하는 경우

후 이전 활동의 조각 때문에 활동주기의 스스로가 파괴됩니다

+0

확인이 Ref : http://stackoverflow.com/questions/26754940/appcompatv7-v21-navigation-drawer-not-showing-hamburger-icon?rq=1 –

+0

당신이 코드의 일부를 제공시겠습니까 경우 첫 번째 활동 초기화하고 기본 조각을 엽니 다 (나는 그것이 당신의 onCreate 메소드 인 것으로 가정합니다). 고맙습니다. –

+0

mDrawerLayout = (DrawerLayout) findViewById (R.id.drawer_layout); NavigationView navigationView = (NavigationView) findViewById (R.id.nav_view); if (navigationView! = null) { 홈 homeFragment = new 홈(); homeFragment.setArguments (getIntent(). getExtras()); getSupportFragmentManager(). beginTransaction() .add (R.id.fragment_container, homeFragment, "HOME"). commit(); setupDrawerContent (navigationView); } – Aaaaaa1212

답변

0

... 제발 도와주세요.

startActivity을 사용하여 첫 번째 활동을 열고 문자 활동을 시작하기 전에 마지막 활성 조각을 저장해야합니다.

0

두 번째 활동을 호출하는 동안 finish를 사용하지 마십시오. 특급의 경우 : 마지막 조각을 열고 onRestoreInstanceState/onCreate이 정보를 복원하는 방법에 대한 Intent i = new Intent(getApplicationContext(), ActivityB.class); startActivity(i); // finish();

+0

나는 사용하지 않았다 finish(); – Aaaaaa1212

0

당신은 정보를 저장 활동onSaveInstanceState를 사용할 수 있습니다. 예를 들어 :

private static final String LAST_OPENED_FRAGMENT_REF = "LAST_OPENED_FRAGMENT_REF"; 
private static final int HOME_FRAGMENT = 0; 
private static final int OTHER_FRAGMENT = 1; 

private int currentOpenedFragment = HOME_FRAGMENT; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    ... 
    if (savedInstanceState != null) { 
     currentOpenedFragment = savedInstanceState.getInt(LAST_OPENED_FRAGMENT_REF); 
    } 
    if (navigationView != null) { 
     Fragment fragment = initFragmentByType(currentOpenedFragment); 
     getSupportFragmentManager() 
      .beginTransaction() 
      .add(R.id.fragment_container, fragment) 
      .commit(); 
     setupDrawerContent(navigationView); 
    } 
    ... 
} 

@Override 
protected void onSaveInstanceState(Bundle outState) { 
    super.onSaveInstanceState(outState); 
    outState.putInt(LAST_OPENED_FRAGMENT_REF, currentOpenedFragment); 
} 

private Fragment initFragmentByType(int type) { 
    switch(type) { 
     case HOME_FRAGMENT: return new Home(); 
     case OTHER_FRAGMENT: return new Other(); 
     default: throw new IllegalArgumentException("There is no type: " + type); 
    } 
} 

그리고는 onNavigationItemSelected 콜백 currentOpenedFragment 필드를 업데이트하는 것을 잊지 마세요.

관련 문제