0

Когда я нажимаю на кнопку «Путешествия», он должен заменить Menufragment на TravelFragment. Но по какой-то причине он не работает, и я не знаю, является ли проблема проблемой onClicklistener или тем, как я заменяю фрагменты. И когда я отлаживаю, он жалуется на строку 32, «View root = inflater.inflate (R.layout.fragment_menu, container, false); это код, который у меня есть.Android Studio Onclick и фрагмент не работают

import android.app.FragmentManager; 
    import android.app.FragmentTransaction; 
    import android.content.Intent; 
    import android.os.Bundle; 
    import android.app.Fragment; 
    import android.view.LayoutInflater; 
    import android.view.View; 
    import android.view.ViewGroup; 
    import android.widget.Button; 
    import android.widget.EditText; 
    import android.widget.Toast; 

    public class MenuFragment extends Fragment { 


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

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

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, 
         Bundle savedInstanceState) { 
    // Inflate the layout for this fragment 
    View root = inflater.inflate(R.layout.fragment_menu, container, false); 
    Button TravelButton = (Button) root.findViewById(R.id.travel); 

    TravelButton.setOnClickListener(buttonListener); 

    return root; 
} 
private View.OnClickListener buttonListener = new View.OnClickListener() { 
    @Override 
    public void onClick(View v) { 

     switch (v.getId()){ 
      case R.id.travel:{ 
       TravelFragment newFragment = new TravelFragment(); 
       FragmentTransaction transaction = getFragmentManager().beginTransaction(); 
       transaction.replace(R.id.container, newFragment); 
       transaction.addToBackStack(null); 
       transaction.commit(); 
      } 
      break; 
     } 
    } 
}; 

}

И это мой XML-код для моего mainactivity (The FrameLayout находится внутри RelativeLayout для размещения контейнера, где я могу заменить фрагменты, например:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:paddingLeft="@dimen/activity_horizontal_margin" 
    android:paddingRight="@dimen/activity_horizontal_margin" 
    android:paddingTop="@dimen/activity_vertical_margin" 
    android:paddingBottom="@dimen/activity_vertical_margin" 
    tools:context=".MainActivity"> 

<FrameLayout 
    android:id="@+id/container" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent"></FrameLayout> 

    </RelativeLayout> 

Я не могу найти проблема: пожалуйста, помогите, я новичок в Android Studio, будьте терпеливы со мной! Вся помощь приветствуется.

+0

Что отладчик/IDE жалуется на вашу строку 32? – thinker

+0

Не задает никаких проблем. Показывает только строку кода, чтобы я мог туда попасть. Затем в отладчике отображается красный текст, который содержит: 5467-5467/se.sneineh.appforduaa A/libc: фатальный сигнал 11 (SIGSEGV) при 0x000035a0 (код = 1), поток 5467 (ineh.appforduaa) – Pajala

+0

Возможно, я забыл чтобы сказать, что происходит, что приложение падает, когда я нажимаю кнопку. Кнопка похожа на синее, а затем падает. Больше ничего не происходит. – Pajala

ответ

0

Попробуйте использовать этот код, адаптировав его:

frag_results frag_results = new frag_results(); 
        FragmentManager manager = getActivity().getSupportFragmentManager(); 
        manager.beginTransaction().replace(R.id.framelayout_secundary, frag_results, frag_results.getTag()).commit(); 
Смежные вопросы