2015-10-31 1 views
1

Я создал домашнюю активность, которая включает в себя ящик навигации onclick с фрагментом. Я включил fragmentTransaction.addToBackStack(null).commit(); с кодом транзакции фрагмента. Но он не возвращается к предыдущей странице, а закрывает приложение.Фрагмент Android addToBackStack не работает с ящиком для навигации

В Мой MainActivity

@SuppressWarnings("StatementWithEmptyBody") 
@Override 
public boolean onNavigationItemSelected(MenuItem item) { 
    FragmentManager fragmentManager = getSupportFragmentManager(); 
    FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction(); 
    // Handle navigation view item clicks here. 
    int id = item.getItemId(); 
    RelativeLayout mainLayout=(RelativeLayout)findViewById(R.id.mainlayout); 

    if (id == R.id.nav_project) { 
     ProjectFragment fragment = new ProjectFragment(); 
     mainLayout.removeAllViews(); 
     fragmentTransaction.replace(R.id.mainlayout, fragment); 
     fragmentTransaction.addToBackStack(null).commit(); 

    } 

    DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout); 
    drawer.closeDrawer(GravityCompat.START); 
    return true; 
} 
@Override 
    public void onBackPressed() { 
     DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout); 
     if (drawer.isDrawerOpen(GravityCompat.START)) { 
      drawer.closeDrawer(GravityCompat.START); 
     } else { 
      super.onBackPressed(); 
     } 
    } 

Мой По умолчанию Fragment

public class ProjectFragment extends Fragment { 

     @Nullable 
     @Override 
     public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
      View v = inflater.inflate(R.layout.fragment_project, container, false); 

      return v; 
     } 



} 

Может кто-нибудь помочь мне разобраться с этой проблемой.

+0

Что вы имеете в виду под "Но это не ответ."? Приходит ли приложение к дому, когда вы нажимаете клавишу «Назад»? –

+0

он не возвращается на предыдущую страницу, а закрывает приложение. –

+1

Спасибо Рубин за изменение текста. Может быть, вы получите больше внимания, вы получили мои, хе-хе. –

ответ

1

Спасибо за ваш ответ, это помогает. В основном вам нужно добавить фрагмент в стек.

Вместо использования replace() используйте метод addfragmentTransaction. Это даст вам желаемый эффект.

Easy образец: fragmentTransaction.add(R.id.mainlayout, fragment);

+1

Большое спасибо сэр/Но он работает только на одном переходе. –

+0

@RubinNellikunnathu, Вы рушитесь на другой переход фрагмента? Я думал ты был. –

+0

Да, я рушился. –