2

하나의 액티비티와 여러 개의 프래그먼트 (예 : frag a, frag b, frag c ...)로 탐색 서랍을 만들었습니다. 프래그먼트 C에서 뒤로 버튼을 클릭하면 프래그먼트가 나타납니다. 문제는 다시 작동이 작동하지 않는다는 것입니다. 아래 코드에서 어떻게 할 수 있습니까?Navigationdrawer 프래그먼트의 뒤로 버튼

private void displayView(int position) { 
    Fragment fragment=null; 

    switch (position) { 
     case 0: 
      fragment = new FragmentA(); 
      break; 
     case 1: 
      fragment = new FragmentB(); 
      break; 
     case 2: 
      fragment = new FragmentC(); 
     default: 
      break; 
    } 

    if (fragment != null) { 
     FragmentManager fragmentManager = getFragmentManager(); 
     fragmentManager.beginTransaction() 
       .replace(R.id.frame_content, fragment) 
       .addToBackStack(null) 
       .commit(); 
     menulistView.setItemChecked(position, true); 
     menulistView.setSelection(position); 
     setTitle(navMenuTitles[position]); 
    } else { 
     Log.e("MainActivity", "Error"); 
    } 
} 
+0

이 조각을 추가하는 대신 나는 그것 당신을 다시 display..If 버튼을 다시 클릭합니다 back..then 홈페이지 조각을가는 추가 넣으면 – iAndroid

답변

0

변경이

fragmentManager.beginTransaction() 
       .add(R.id.frame_content, fragment) 
       .addToBackStack(null) 
       .commit(); 

addToBackStack이 라인

fragmentManager.beginTransaction() 
       .replace(R.id.frame_content, fragment) 
       .addToBackStack(null) 
       .commit(); 

add와 함께 작동합니다.

replace 함수는 이전 조각을 제거하고 새 조각을 배치하므로 백 스택에 항상 단 하나의 조각 만 있습니다. 따라서 add 함수를 사용하여 이전 조각을 스택에 유지하십시오.

+0

를 교체 activity_main_drawer.xml에게 있습니다 .. 응용 프로그램이 존재하지 않습니다. 다시 작동을하는 동안 FrameLayout – Kingraj

0

how to implement your own backstack

희망에서이 도움이 :)

+0

을 표시하는 항목 ... 마지막 조각을 가정 조각으로 가져온 경우 ... 첫 번째 조각 작업 표시 줄에서 마지막 조각 제목을 표시합니다 – Kingraj

+0

@Kingraj 조각에서 작업 표시 줄 제목을 변경할 수 있습니다 setActionBarTitle (YOUR_TITLE); ' –

+0

당신이 그것을 당신의 활동에서 바꾸고 싶다면,이'ge() (MainFragmentActivity) getActivity()). setActionBarTitle (YOUR_TITLE); tSupportActionBar(). setTitle (제목); ' –

0

// 곳이 코드를 당신의 MainActivity 보면, 트릭

public void onBackPressed() 
{ 
    FragmentManager fm = getActivity().getSupportFragmentManager(); 
    fm.popBackStack(); 
} 

없는 경우 어떻게해야

@SuppressWarnings("StatementWithEmptyBody") 
    @Override 
    public boolean onNavigationItemSelected(MenuItem item) { 
     Fragment fragment; 
     int id = item.getItemId(); 
     // String title = getString(R.string.app_name); 

     if (id == R.id.register) { 
      fragment=new Register(); 
      FragmentTransaction ft = getSupportFragmentManager().beginTransaction(); 
      ft.replace(R.id.mainframe,fragment); 
      ft.addToBackStack(null); 
      ft.commit(); 
     // title="Proviso Intech :: Registration"; 


     } else if (id == R.id.job) { 
      fragment=new job(); 
      FragmentTransaction ft = getSupportFragmentManager().beginTransaction(); 
      ft.replace(R.id.mainframe,fragment); 
      ft.addToBackStack(null); 
      ft.commit(); 
      // title="Proviso Intech :: Job Search"; 

     } 
     else if(id==R.id.home){ 
      fragment=new home(); 
      FragmentTransaction ft = getSupportFragmentManager().beginTransaction(); 
      ft.replace(R.id.mainframe,fragment); 
      ft.addToBackStack(null); 
      ft.commit(); 
     // title="Proviso Intech :: Home"; 


     } 
     DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout); 
     drawer.closeDrawer(GravityCompat.START); 
     return true; 
    } 

이것은 내 content_main.xml입니다.

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:app="http://schemas.android.com/apk/res-auto" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:paddingBottom="@dimen/activity_vertical_margin" 
    android:paddingLeft="@dimen/activity_horizontal_margin" 
    android:paddingRight="@dimen/activity_horizontal_margin" 
    android:paddingTop="@dimen/activity_vertical_margin" 
    android:id="@+id/main" 

    app:layout_behavior="@string/appbar_scrolling_view_behavior" 
    tools:context="com.intech.proviso.proviso.MainActivity" 
    tools:showIn="@layout/app_bar_main"> 


    <FrameLayout 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:layout_centerVertical="true" 
     android:layout_centerHorizontal="true" 
     android:id="@+id/mainframe"></FrameLayout> 
</RelativeLayout> 

는 // 여기에

<?xml version="1.0" encoding="utf-8"?> 
<menu xmlns:android="http://schemas.android.com/apk/res/android" 

    > 

    <group android:checkableBehavior="single"> 
     <item 
      android:id="@+id/home" 
      android:icon="@drawable/common_full_open_on_phone" 
      android:checkable="true" 
      android:title="Home" /> 
     <item 
      android:id="@+id/register" 
      android:icon="@drawable/ic_menu_send" 
      android:title="Register" /> 
     <item 
      android:id="@+id/job" 
      android:icon="@drawable/ic_menu_manage" 
      android:title="Job Posts" /> 


    </group></menu> 
+0

id이 id == R.id.job – Kingraj

+0

이것은 내비게이션 아이템의 ID입니다.

<그룹 안드로이드 : checkableBehavior = "싱글"> <항목 안드로이드 : ID = "@ + ID/작업" 안드로이드 : 아이콘 = "@ 드로어 블/ic_menu_manage" 안드로이드 : 제목 = "작업 게시물"/>