1

可能なすべての回答を確認した後、自分のコードに間違いがないかどうかはわかりません。Android Studio - フラグメントonClickListenerが機能しない

3つのフラグメントにOnClickListenerが必要です。そのうちの1つはmainActivityによって読み込まれます。彼らの誰も働いていません。私は各フラグメントにOnClickListenerを実装しました。

ここに私のコードです:

RequestFragment1.java

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

    view = inflater.inflate(R.layout.fragment_request1, container, false); 
    Button buttonRequest1 = (Button) view.findViewById(R.id.Request1Button); 
    buttonRequest1.setOnClickListener(new View.OnClickListener() { 
     public void onClick(View v) { 
      String url = "https://www.google.ca/"; 
      WebView httpRequestResult = (WebView) getActivity().findViewById(R.id.webViewResult); 
      httpRequestResult.getSettings().setJavaScriptEnabled(false); 
      httpRequestResult.loadUrl(url); 
      getActivity().setContentView(R.layout.requests_webview); 
     } 
    }); 
    return view; 
} 

fragment_request1.xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/relativeLayout1" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" > 

    <Button 
     android:id="@+id/Request1Button" 
     android:layout_width="match_parent" 
     android:layout_height="90dp" 
     android:layout_centerVertical="true" 
     android:layout_centerHorizontal="true" 
     android:text="Requête 1" /> 

</RelativeLayout> 

MainActivity.java

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.fragment_request1); 

    View currentView = findViewById(android.R.id.content); 
    //Implementation du TouchListener 
    currentView.setOnTouchListener(new SwipeListener(MainActivity.this) { 

Request1Buttonを押すとWebviewを開く必要があります。

ありがとうございました!

+0

ようこそスタックオーバーフロー。お手伝いをするために、さらに情報が必要です。このアプリには正確に何をしたいですか?今何してるの?また、あなたの質問に直接焦点を当てるようにコードを減らすと、助けになります。実験用に新しいAndroid Studioプロジェクトを作成することができます。このプロトタイプアプリを単一のリスナーと連携させる。そこから作業してください。 –

+0

p.s.また、Javaではすべてのコードがクラスに含まれている必要があります。これらのクラス宣言を含めると、特にAndroid開発でコードのコンテキストをよりよく理解できます。 –

答えて

1
setContentView(R.layout.fragment_request1); 

MainActivity.onCreate()でこのラインはfragment_request1という名前のXMLファイルで定義されたレイアウトを膨張させます。ただし、ではなく、フラグメントを作成します。したがって、RequestFragment1.onCreateView()は呼び出されず、OnClickListenerは設定されません。

フラグメントを正しく作成し、FragmentManagerでロードする必要があります。これを行う方法を示す多くのオンラインチュートリアルがあります。 Androidデベロッパーのウェブサイトから始めることをお勧めします。

+0

あなたは正しかった!私はすべてが解決されたらあなたの答えを受け入れるだろうが、あなたは正しい道にいた!ありがとうございました! – Selecto

関連する問題