0

そのため、理解できないエラーが発生しています。buttonmy 内のa をクリックして afragmentを起動するdialogと、プログラムがクラッシュします。私のlogcatにはbutton、idには no があり、には no があると書かれてmethodhandlerます。私は明らかにこれらのものを持っているか、混乱することはありません。私の疲れた目は明らかな何かを見逃していると思います。.java.xml、および任意のlogcat助けをいただければ幸いです。

.java

public class Store_Fragment extends Fragment {
View view;

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

    view = inflater.inflate(R.layout.fragment_store, container, false);

    return view;
}

public void syncHandler (View view) {
    DialogFragment newFragment = new StoreDialog_Fragment();
    newFragment.show(getFragmentManager(), "correct store?");
}

}

.xml

<?xml version="1.0" encoding="utf-8"?>

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/LinearLayout1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center"
android:orientation="vertical" >

<TableRow
    android:id="@+id/tableRow1"
    android:layout_width="match_parent"
    android:layout_height="wrap_content" >

    <TextView
        android:id="@+id/textView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/store_number"
        android:textAppearance="?android:attr/textAppearanceMedium" />

    <EditText
        android:id="@+id/storeNum_input_ID"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:ems="8"
        android:hint="@string/store_hint" />

    <Button
        android:id="@+id/sync_button_ID"
        style="?android:attr/borderlessButtonStyle"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:onClick="syncHandler"
        android:text="@string/sync" />

</TableRow>

</LinearLayout>

ログキャット

05-07 06:38:34.143: W/dalvikvm(1579): threadid=1: thread exiting with uncaught exception (group=0x40a71930)
05-07 06:38:34.183: E/AndroidRuntime(1579): FATAL EXCEPTION: main
05-07 06:38:34.183: E/AndroidRuntime(1579): java.lang.IllegalStateException: Could not find a method syncHandler(View) in the activity class 
com.facilitysolutionsinc.trackflex.Main for onClick handler on view class android.widget.Button with id 'sync_button_ID'
05-07 06:38:34.183: E/AndroidRuntime(1579):     at android.view.View$1.onClick(View.java:3586)
05-07 06:38:34.183: E/AndroidRuntime(1579):     at android.view.View.performClick(View.java:4204)
05-07 06:38:34.183: E/AndroidRuntime(1579):     at android.view.View$PerformClick.run(View.java:17355)
05-07 06:38:34.183: E/AndroidRuntime(1579):     at android.os.Handler.handleCallback(Handler.java:725)
05-07 06:38:34.183: E/AndroidRuntime(1579):     at android.os.Handler.dispatchMessage(Handler.java:92)
05-07 06:38:34.183: E/AndroidRuntime(1579):     at android.os.Looper.loop(Looper.java:137)
05-07 06:38:34.183: E/AndroidRuntime(1579):     at android.app.ActivityThread.main(ActivityThread.java:5041)
05-07 06:38:34.183: E/AndroidRuntime(1579):     at java.lang.reflect.Method.invokeNative(Native Method)
05-07 06:38:34.183: E/AndroidRuntime(1579):     at java.lang.reflect.Method.invoke(Method.java:511)
05-07 06:38:34.183: E/AndroidRuntime(1579):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)
05-07 06:38:34.183: E/AndroidRuntime(1579):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)
05-07 06:38:34.183: E/AndroidRuntime(1579):     at dalvik.system.NativeStart.main(Native Method)
05-07 06:38:34.183: E/AndroidRuntime(1579): Caused by: java.lang.NoSuchMethodException: syncHandler [class android.view.View]
05-07 06:38:34.183: E/AndroidRuntime(1579):     at java.lang.Class.getConstructorOrMethod(Class.java:460)
05-07 06:38:34.183: E/AndroidRuntime(1579):     at java.lang.Class.getMethod(Class.java:915)
05-07 06:38:34.183: E/AndroidRuntime(1579):     at android.view.View$1.onClick(View.java:3579)
05-07 06:38:34.183: E/AndroidRuntime(1579):     ... 11 more
4

1 に答える 1

1

オンクリック ハンドラーを設定するこの方法は、Activityオブジェクトに対してのみ機能します。

これを a 内から実行しようとしていますFragment- そのため、エラーが発生しています。

コントロールをフラグメントに渡すメソッドをアクティビティに配置するかsyncHandler(View)、クリック ハンドラーを設定する従来の手動の方法を使用してみてください。


完全を期すための更新-@Praganiが参照する質問のコンテキストで、私の2つの提案があります(フラグメント内のXML onClickを使用してボタンクリックを処理する方法)

于 2013-05-07T06:49:51.550 に答える