2016-05-24 4 views
0

При нажатии кнопки Я пытаюсь открыть второй фрагмент (YourResultFragment.java), У меня было много, но не знаю, почему он не работает, вот мой код, который я используюНе удается открыть второй фрагмент

public class KnowYourBodyFragment extends Fragment { 


    public KnowYourBodyFragment() { 
     // Required empty public constructor 
    } 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 


    } 

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




     Button button = (Button)rootView.findViewById(R.id.button2); 
     button.setOnClickListener(new OnClickListener() 
     { 
      @Override 
      public void onClick(View v) 
      { 

       Fragment mFragment = new YourResultFragment(); 
       getActivity().getSupportFragmentManager().beginTransaction() 
          .replace(R.id.know_your_body_container, mFragment).commit(); 
      } 
     }); 

     // Inflate the layout for this fragment 
     return rootView; 
    } 
+0

Эта кнопка нажата в действии или frgament ..? –

+0

опубликуйте свой xml-контент для активности. – Amit

ответ

1

Используйте эту Попробуйте заменить его Default Container android.R.id.content.

Button button = (Button)rootView.findViewById(R.id.button2); 
button.setOnClickListener(new OnClickListener() { 

     @Override 
     public void onClick(View v) { 
      // TODO Auto-generated method stub 

      Fragment newFragment = new YourResultFragment(); 
      FragmentTransaction transaction = getFragmentManager() 
        .beginTransaction(); 

      // Replace whatever is in the fragment_container view with this 
      // fragment, 
      // and add the transaction to the back stack 
      transaction.replace(android.R.id.content, newFragment); 
      transaction.addToBackStack("tag"); 

      // Commit the transaction 
      transaction.commitAllowingStateLoss(); 

     } 
    }); 

transaction.addToBackStack("tag") Что такое?

Добавить эту транзакцию в стопку. Это означает, что транзакция будет запомнена после ее фиксации и изменит ее действие, когда позже выскочит из стека.

+1

Спасибо, Бадди, это работает, но для чего используется эта строка кода, ... transaction.addToBackStack («tag»); –

+0

@SujitSoni Если это сработало, тогда ** примите ** и ** up-vote ** также ответ, чтобы он был полезен другим. –

+0

@SujitSoni Проверить, что я обновил для 'addTobackStack'. –

Смежные вопросы