【发布时间】:2010-11-30 20:44:40
【问题描述】:
我正在尝试学习自定义对话框。我做了一个,里面有一个按钮,它运行良好,我可以在构造函数和 onCreate 方法中打断点,但是当我单击按钮时它会崩溃,而不会到达按钮处理程序。
对话框布局 XML (my_dialog_layout.xml) 是:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<Button
android:id="@+id/AButton"
android:layout_width="100px"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:layout_marginLeft="10px"
android:onClick="AButtonHandler"
android:text="Click Me"
/>
<TextView android:id="@+id/text"
android:layout_width="wrap_content"
android:layout_height="fill_parent"
android:layout_toLeftOf="@id/AButton"
android:text="Click this button: "
/>
/>
...而Dialog的java文件是:
import android.os.Bundle;
import android.widget.Toast;
import android.view.View;
import android.content.Context;
import android.app.Dialog;
public class MyDialog extends Dialog {
public MyDialog(Context context) {
super(context);
setContentView(R.layout.my_dialog_layout);
}
public void AButtonHandler(View target) {
int i = 0; // just a placeholder to set a breakpoint at
i++; // " "
// Toast.makeText(this, "in AButtonHandler", Toast.LENGTH_LONG).show();
MyDialog.this.dismiss();
}
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// Toast.makeText(this, "Dialog onCreate", Toast.LENGTH_LONG).show();
}
}
当我单击 AButton 时,它在调试器中崩溃,然后在 AButtonHandler 中到达我的断点,并带有“
线程 [ main](暂停(异常 IllegalStateException))
查看$1.onClick(查看) 行:2059
Button(View).performClick() 行:2408
……”
还要注意注释掉的 Toast's。我想把 Toasts 放进去,但是你的编译器给了我:Toast 类型中的方法 makeText(Context, CharSequence, int) 不适用于参数(MyDialog, String, int) 我做错了什么?
提前致谢!
【问题讨论】:
-
为什么是
MyDialog.this.dismiss()?您在 MyDialog 中,而不是内部类。这是您使用 OnClickListener 时的遗留问题吗? -
其实是的。我将其更改为 this.dismiss()。并不是说它曾经到达那里 8-)
标签: android