Android 从对话框中的按钮运行方法
我有一个对话框,在操作栏中按下按钮时弹出。对话框中有一个带有几个按钮的布局。其中一个按钮我只是想调用一个简单的方法来显示一个toast,只是为了表明它正在工作 这是来自显示对话框的初始按钮的方法:Android 从对话框中的按钮运行方法,android,Android,我有一个对话框,在操作栏中按下按钮时弹出。对话框中有一个带有几个按钮的布局。其中一个按钮我只是想调用一个简单的方法来显示一个toast,只是为了表明它正在工作 这是来自显示对话框的初始按钮的方法: public void optionsPressed(MenuItem item){ final Dialog optionsDialog = new Dialog(this); optionsDialog.setTitle("Options"); optionsDialog.
public void optionsPressed(MenuItem item){
final Dialog optionsDialog = new Dialog(this);
optionsDialog.setTitle("Options");
optionsDialog.setContentView(R.layout.options);
optionsDialog.show();
}
这是布局的一部分,我正试图用这个按钮来显示祝酒词:
<ImageButton
android:layout_width="@dimen/large_brush"
android:layout_height="@dimen/large_brush"
android:layout_margin="2dp"
android:background="#FFFF66"
android:layout_weight="1"
android:onClick="paintClicked"
android:tag="FFFF66" />
我正在尝试在这个方法中加入一些更重要的代码,而不仅仅是一个祝酒词,但是现在,在调试完我的应用程序之后,我甚至没有回到paintClicked方法,我不知道为什么
03-26 12:12:51.927: E/AndroidRuntime(17686): FATAL EXCEPTION: main
03-26 12:12:51.927: E/AndroidRuntime(17686): java.lang.IllegalStateException: Could not find a method paintClicked(View) in the activity class android.view.ContextThemeWrapper for onClick handler on view class android.widget.ImageButton
03-26 12:12:51.927: E/AndroidRuntime(17686): at android.view.View$1.onClick(View.java:3825)
03-26 12:12:51.927: E/AndroidRuntime(17686): at android.view.View.performClick(View.java:4475)
03-26 12:12:51.927: E/AndroidRuntime(17686): at android.view.View$PerformClick.run(View.java:18786)
03-26 12:12:51.927: E/AndroidRuntime(17686): at android.os.Handler.handleCallback(Handler.java:730)
03-26 12:12:51.927: E/AndroidRuntime(17686): at android.os.Handler.dispatchMessage(Handler.java:92)
03-26 12:12:51.927: E/AndroidRuntime(17686): at android.os.Looper.loop(Looper.java:137)
03-26 12:12:51.927: E/AndroidRuntime(17686): at android.app.ActivityThread.main(ActivityThread.java:5419)
03-26 12:12:51.927: E/AndroidRuntime(17686): at java.lang.reflect.Method.invokeNative(Native Method)
03-26 12:12:51.927: E/AndroidRuntime(17686): at java.lang.reflect.Method.invoke(Method.java:525)
03-26 12:12:51.927: E/AndroidRuntime(17686): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1187)
03-26 12:12:51.927: E/AndroidRuntime(17686): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1003)
03-26 12:12:51.927: E/AndroidRuntime(17686): at dalvik.system.NativeStart.main(Native Method)
03-26 12:12:51.927: E/AndroidRuntime(17686): Caused by: java.lang.NoSuchMethodException: paintClicked [class android.view.View]
03-26 12:12:51.927: E/AndroidRuntime(17686): at java.lang.Class.getConstructorOrMethod(Class.java:423)
03-26 12:12:51.927: E/AndroidRuntime(17686): at java.lang.Class.getMethod(Class.java:787)
03-26 12:12:51.927: E/AndroidRuntime(17686): at android.view.View$1.onClick(View.java:3818)
03-26 12:12:51.927: E/AndroidRuntime(17686): ... 11 more
您需要为按钮设置一个ID,然后执行以下操作:
Button button1;
button1 =(Button)optionsDialog.findViewById(R.id.button1);
button1.setOnClickListener(new OnClickListener() {
Toast.makeText(getApplicationContext(), "Color selected", Toast.LENGTH_LONG).show();
}
将paintClicked方法中的代码放入onclicklistener
在方法中执行此操作的示例:(我尚未测试此方法):
这将在当前活动中搜索
paintClicked
,如果在片段或对话框中有此方法,则不会找到它。因此:使用典型的setOnClickListener()并在那里实现您的函数,或者将此函数移动到活动(不推荐)请共享您的日志;您是否有任何错误?那么应该将对话框声明为静态的?而不是在我使用的方法中?仍然不起作用,出于某种原因,这会破坏应用程序编辑我的答案,如果这仍然不起作用,请发布您的错误日志!
Button button1;
button1 =(Button)optionsDialog.findViewById(R.id.button1);
button1.setOnClickListener(new OnClickListener() {
Toast.makeText(getApplicationContext(), "Color selected", Toast.LENGTH_LONG).show();
}
public void optionsPressed(MenuItem item){
final Dialog optionsDialog = new Dialog(this);
optionsDialog.setTitle("Options");
View dialogView = View.inflate(this, R.layout.options, null);
button1 = (Button) dialogView.findViewById(R.id.button1);
button1.setOnClickListener(new OnClickListener() {
Toast.makeText(getApplicationContext(), "Color selected", Toast.LENGTH_LONG).show();
}
optionsDialog .setContentView(dialogView);
optionsDialog .show();
}
android:onClick="paintClicked"