2016-03-26 11 views
-1

ナビゲーション画面にボタンを追加しました。しかし、ボタンをクリックすると。アプリケーションは強制的に停止します。コードにエラーはありません。ここにJavaファイルナビゲーションドロワーボタンが機能しない

package com.android.pet.view; 
import android.os.Bundle; 
import android.support.v4.app.Fragment; 
import android.view.View; 
import android.widget.RadioButton; 
import android.widget.RadioGroup; 
import android.widget.Toast; 
import android.view.LayoutInflater; 
import android.view.ViewGroup; 

import com.doepiccoding.navigationdrawer.R; 

public class Lesson111 extends Fragment { 
    private RadioGroup radioGroup; 


    public View onCreateView(LayoutInflater Inflater, ViewGroup container,Bundle savedInstanceState) { 
     View rootView = Inflater.inflate(R.layout.onepointthree, null); 

    /* Initialize Radio Group and attach click handler */ 
     radioGroup = (RadioGroup) rootView.findViewById(R.id.radioGroup); 
     radioGroup.clearCheck(); 

    /* Attach CheckedChangeListener to radio group */ 
     radioGroup.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() { 
      @Override 
      public void onCheckedChanged(RadioGroup group, int checkedId) { 
       RadioButton rb = (RadioButton) group.findViewById(checkedId); 
       if(null!=rb && checkedId > -1){ 
        Toast.makeText(Lesson111.this.getActivity(), rb.getText(), Toast.LENGTH_SHORT).show(); 
       } 

      } 
     }); 
     return rootView; 
    } 

    public void onClear(View v) { 
    /* Clears all selected radio buttons to default */ 
     radioGroup.clearCheck(); 
    } 

    public void onSubmit(View v) { 
     RadioButton rb = (RadioButton) radioGroup.findViewById(radioGroup.getCheckedRadioButtonId()); 
     Toast.makeText(Lesson111.this.getActivity(), rb.getText(), Toast.LENGTH_SHORT).show(); 
    } 
} 

また、ここにはlogcatがあります。ここで

03-27 07:36:12.185 24720-24720/com.doepiccoding.navigationdrawer E/AndroidRuntime: FATAL EXCEPTION: main 
                        Process: com.doepiccoding.navigationdrawer, PID: 24720 
                        java.lang.IllegalStateException: Could not find a method onClear(View) in the activity class com.android.pet.view.NavigationActivity for onClick handler on view class android.widget.Button with id 'clearBtn' 
                         at android.view.View$1.onClick(View.java:3871) 
                         at android.view.View.performClick(View.java:4499) 
                         at android.view.View$PerformClick.run(View.java:18575) 
                         at android.os.Handler.handleCallback(Handler.java:733) 
                         at android.os.Handler.dispatchMessage(Handler.java:95) 
                         at android.os.Looper.loop(Looper.java:136) 
                         at android.app.ActivityThread.main(ActivityThread.java:5021) 
                         at java.lang.reflect.Method.invokeNative(Native Method) 
                         at java.lang.reflect.Method.invoke(Method.java:515) 
                         at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:827) 
                         at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:643) 
                         at dalvik.system.NativeStart.main(Native Method) 
                        Caused by: java.lang.NoSuchMethodException: onClear [class android.view.View] 
                         at java.lang.Class.getConstructorOrMethod(Class.java:472) 
                         at java.lang.Class.getMethod(Class.java:857) 
                         at android.view.View$1.onClick(View.java:3864) 
                         at android.view.View.performClick(View.java:4499)  
                         at android.view.View$PerformClick.run(View.java:18575)  
                         at android.os.Handler.handleCallback(Handler.java:733)  
                         at android.os.Handler.dispatchMessage(Handler.java:95)  
                         at android.os.Looper.loop(Looper.java:136)  
                         at android.app.ActivityThread.main(ActivityThread.java:5021)  
                         at java.lang.reflect.Method.invokeNative(Native Method)  
                         at java.lang.reflect.Method.invoke(Method.java:515)  
                         at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:827)  
                         at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:643)  
                         at dalvik.system.NativeStart.main(Native Method)  

は、XMLファイル

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
       android:layout_width="fill_parent" 
       android:layout_height="wrap_content" 
       android:orientation="vertical" 
       android:padding="20dp"> 

    <TextView 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:text="What is ICT?" 
     android:textColor="@android:color/black" 
     android:textSize="20sp" 
     android:layout_alignParentTop="true" 
     android:layout_centerHorizontal="true" 
     android:gravity="center" 
     /> 

    <RadioGroup 
     android:id="@+id/radioGroup" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:orientation="vertical" 
      > 

     <RadioButton 
      android:id="@+id/radioButton1" 
      android:layout_width="fill_parent" 
      android:layout_height="wrap_content" 
      android:text="Option 1" 
      android:textColor="@android:color/black" 
      android:textSize="20sp" 
/> 

     <RadioButton 
      android:id="@+id/radioButton2" 
      android:layout_width="fill_parent" 
      android:layout_height="wrap_content" 
      android:text="Option 2" 
      android:textColor="@android:color/black" 
      android:textSize="20sp" 
/> 

     <RadioButton 
      android:id="@+id/radioButton3" 
      android:layout_width="fill_parent" 
      android:layout_height="wrap_content" 
      android:text="Option 3" 
      android:textColor="@android:color/black" 
      android:textSize="20sp" 
/> 
    </RadioGroup> 

    <LinearLayout 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:orientation="horizontal"> 

     <Button 
      android:id="@+id/clearBtn" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:layout_weight="1" 
      android:onClick="onClear" 
      android:text="Clear " /> 

     <Button 
      android:id="@+id/submitBtn" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:layout_weight="1" 
      android:onClick="onSubmit" 
      android:text="Submit" /> 
    </LinearLayout> 
</LinearLayout> 
+1

クリックしたビューのレイアウトを表示します。 –

+0

レイアウトXMLで 'onClick'属性として設定するメソッドは' Activity'クラスのメンバでなければなりません。彼らは「断片」に入ることはできません。この場合、 'OnTouchListener'を動的に設定することが望ましいでしょう。つまり、XML属性を設定するのではなく、 'Fragment'の' onCreateView() 'メソッドの' Button'に 'setOnClickListener()'メソッドを使用します。 –

+0

@DougStevenson Im申し訳ありませんが、あなたの回答を得られませんでした。 xmlファイルやアプリの画像を表示する必要があると言っていますか? – Dreamer

答えて

1

あなたのレイアウトでこのボタンのコードです:

<Button 
     android:id="@+id/clearBtn" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:layout_weight="1" 
     android:onClick="onClear" 
     android:text="Clear " /> 
それがクリックされていますとき、onClearというメソッドを実行することを言っている

()ビューを含むアクティビティで

エラーメッセージは、アクティビティに関連するonClear()メソッドが存在しないというエラーメッセージです。 onClearがフラグメントにありますが、これはアクティビティではありません。それは活動だけで動作します。

android:onClickを使用してメソッドの名前を指定する代わりに、ほとんどの場合OnClickListenerオブジェクトをコードに登録する方が良いでしょう。

+0

私のコードにonclicklistenerを実装するにはどうすればいいですか? – Dreamer

+0

それには多くの素晴らしいチュートリアルがあります。検索して試してみてください。問題がある場合は、ここで別の質問をしてください。 –

+0

私は今すぐそれに。ありがとうございました – Dreamer