我有一個「小」的問題,編寫我的應用程序.. 我有自定義對話框點擊按鈕後顯示什麼。 在這個自定義對話框中,我有一些textviews和按鈕.. 我想要以下內容:如果我點擊對話框中的按鈕,應用程序將開始調用(它不是問題的關鍵,它會做什麼)。自定義對話框 - 只有匿名聽衆工作
但問題是,我不能寫監聽器。所有的時候,如果我在xml佈局文件中編寫監聽器,我會崩潰我的應用程序。有一個解決方案 - 像匿名監聽者那樣編寫監聽器。但是我不太喜歡匿名聽衆(如果你在佈局中有100個按鈕,並且你需要添加匿名監聽器,那麼代碼會很困惑)。
我不確定是否需要編寫View.OnClickListener()或DialogInterface.OnClickListener() - 我認爲第一個但我不確定。匿名監聽與視圖一,非匿名(通過XML佈局文件)不工作的一個和秒。以及..任何人都可以說我「爲什麼」?
代碼:
這項工作:
b.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
Log.e("err","I am here");
}
});
這個不工作:
-xml_layout_file
<Button
android:id="@+id/btn_startCall"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:onClick="onClick_startCall"
android:text="@string/btn_startCall" />
-myDialog.java(延伸對話框)
從日誌10輸出:
08-31 22:08:05.469: W/dalvikvm(9456): threadid=1: thread exiting with uncaught exception (group=0x40a3b1f8)
08-31 22:08:05.475: E/AndroidRuntime(9456): FATAL EXCEPTION: main
08-31 22:08:05.475: E/AndroidRuntime(9456): java.lang.IllegalStateException: Could not find a method onClick_startCall(View) in the activity class android.view.ContextThemeWrapper for onClick handler on view class android.widget.Button with id 'btn_startCall'
08-31 22:08:05.475: E/AndroidRuntime(9456): at android.view.View$1.onClick(View.java:3031)
08-31 22:08:05.475: E/AndroidRuntime(9456): at android.view.View.performClick(View.java:3511)
08-31 22:08:05.475: E/AndroidRuntime(9456): at android.view.View$PerformClick.run(View.java:14105)
08-31 22:08:05.475: E/AndroidRuntime(9456): at android.os.Handler.handleCallback(Handler.java:605)
08-31 22:08:05.475: E/AndroidRuntime(9456): at android.os.Handler.dispatchMessage(Handler.java:92)
08-31 22:08:05.475: E/AndroidRuntime(9456): at android.os.Looper.loop(Looper.java:137)
08-31 22:08:05.475: E/AndroidRuntime(9456): at android.app.ActivityThread.main(ActivityThread.java:4673)
08-31 22:08:05.475: E/AndroidRuntime(9456): at java.lang.reflect.Method.invokeNative(Native Method)
08-31 22:08:05.475: E/AndroidRuntime(9456): at java.lang.reflect.Method.invoke(Method.java:511)
08-31 22:08:05.475: E/AndroidRuntime(9456): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:789)
08-31 22:08:05.475: E/AndroidRuntime(9456): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:556)
08-31 22:08:05.475: E/AndroidRuntime(9456): at dalvik.system.NativeStart.main(Native Method)
08-31 22:08:05.475: E/AndroidRuntime(9456): Caused by: java.lang.NoSuchMethodException: onClick_startCall [class android.view.View]
08-31 22:08:05.475: E/AndroidRuntime(9456): at java.lang.Class.getConstructorOrMethod(Class.java:460)
08-31 22:08:05.475: E/AndroidRuntime(9456): at java.lang.Class.getMethod(Class.java:915)
08-31 22:08:05.475: E/AndroidRuntime(9456): at android.view.View$1.onClick(View.java:3024)
08-31 22:08:05.475: E/AndroidRuntime(9456): ... 11 more
可能愚蠢的問..但有擴展活動和實現dialogInterface的方式? (我不知道到底是什麼dialogInterface ..) – piggy
謝謝!多數民衆贊成我所尋找的.. – piggy