2014-10-09 160 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(); 
} 

}

请帮助我..告诉我,我要去哪里错了。 我只想说哪个片段被打开,同时单击后退按钮应该打开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 2014-10-09 20:06:11

+0

您不必覆盖KeyEvent.KEYCODE_BACK – JoaoBiriba 2014-10-09 20:21:14

+0

即使我删除覆盖,仍然没有改变。 – Falguni 2014-10-09 20:39:39