2014-10-09 4 views
0

Я пытаюсь открыть фрагмент дома из разных фрагментов, если я нажму кнопку «Назад» (кнопка возврата устройства). но вместо замены фрагмента приложение закрывается и появляется экран меню устройства. я не в состоянии, что идет не так. и ошибок нет. пожалуйста, помогите мне ..Изменение кода фрагмента назад

HomeFragment:

public class HomeFragment extends Fragment { 

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, 
     Bundle savedInstanceState) { 

    View view = inflater.inflate(R.layout.home, container, false); 

    return view; 

} 

OneFragment: метод

public class OneFragment extends Fragment { 

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, 
     Bundle savedInstanceState) { 

    View view = inflater.inflate(R.layout.activity_one, container, false); 

    OnKeyListener pressed = new OnKeyListener() { 
     @Override 
     public boolean onKey(View v, int keyCode, KeyEvent event) { 
      if (keyCode == KeyEvent.KEYCODE_BACK) { 
       return true; 
      } 
      return false; 
     } 
    }; 
    view.setOnKeyListener(pressed); 
    return view; 

} 

public boolean onKeyDown(int keyCode, KeyEvent event) { 

    if (keyCode == KeyEvent.KEYCODE_BACK) { 
     Fragment newFragment = new HomeFragment(); 
     FragmentTransaction transaction = getFragmentManager() 
       .beginTransaction(); 
     transaction.replace(R.id.content_frame, newFragment); 
     // transaction.addToBackStack(null); 
     transaction.commit(); 
     return false; 
    } 
    return super.getActivity().onKeyDown(keyCode, event); 
} 

} 

Я даже попытался использовать onBackPressed() в фрагменте. но никакого желаемого выхода.

twoFragment:

public class TwoFragment extends Fragment { 

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, 
     Bundle savedInstanceState) { 

    View view = inflater.inflate(R.layout.activity_two, container, false); 

    return view; 

} 
    public void onBackPressed() { 
    Fragment newFragment = new WordFragment(); 
    FragmentTransaction transaction = getFragmentManager() 
      .beginTransaction(); 
    transaction.replace(R.id.content_frame, newFragment); 
    // transaction.addToBackStack(null); 
    transaction.commit(); 

    super.getActivity().onBackPressed(); 
} 

}

пожалуйста, помогите мне .. скажите мне, где я буду неправильно. Я просто хочу, чтобы какой фрагмент открыт, при нажатии на BackButton он должен открыть homefragment класс ..

ответ

0

Для обработки обратно навигации с фрагментом вы должны использовать:

// Works with either the framework FragmentManager or the 
    // support package FragmentManager (getSupportFragmentManager). 
    getSupportFragmentManager().beginTransaction() 
           .add(detailFragment, "detail") 
           // Add this transaction to the back stack 
           .addToBackStack() 
           .commit(); 

Вы можете прочитать на Implementing navigation

+0

Ничего не случилось. я изменил код bt не получил желаемый результат – Falguni

+0

Вам не нужно переопределять KeyEvent.KEYCODE_BACK – JoaoBiriba

+0

Даже если я удалю переопределение, все равно ничего не изменится. – Falguni