java代码:
- Java code
package com.xiuman.mydialog;import android.app.Dialog;import android.content.Context;import android.os.Bundle;import android.view.View;import android.widget.ImageView;public class MyDialog extends Dialog { Context context; public MyDialog(Context context) { super(context); // TODO Auto-generated constructor stub this.context = context; } public MyDialog(Context context, int theme){ super(context, theme); this.context = context; } @Override protected void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onCreate(savedInstanceState); this.setContentView(R.layout.dialog); ImageView imageview = (ImageView)findViewById(R.id.imageviewClose); imageview.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { dismiss(); } }); } public void dismiss(){ this.cancel(); }}
log:
- Java code
08-17 15:32:42.080: E/AndroidRuntime(1326): FATAL EXCEPTION: main08-17 15:32:42.080: E/AndroidRuntime(1326): java.lang.StackOverflowError08-17 15:32:42.080: E/AndroidRuntime(1326): at com.xiuman.mydialog.MyDialog.dismiss(MyDialog.java:37)08-17 15:32:42.080: E/AndroidRuntime(1326): at android.app.Dialog.cancel(Dialog.java:951)08-17 15:32:42.080: E/AndroidRuntime(1326): at com.xiuman.mydialog.MyDialog.dismiss(MyDialog.java:37)08-17 15:32:42.080: E/AndroidRuntime(1326): at android.app.Dialog.cancel(Dialog.java:951)08-17 15:32:42.080: E/AndroidRuntime(1326): at com.xiuman.mydialog.MyDialog.dismiss(MyDialog.java:37)08-17 15:32:42.080: E/AndroidRuntime(1326): at android.app.Dialog.cancel(Dialog.java:951)08-17 15:32:42.080: E/AndroidRuntime(1326): at com.xiuman.mydialog.MyDialog.dismiss(MyDialog.java:37)08-17 15:32:42.080: E/AndroidRuntime(1326): at android.app.Dialog.cancel(Dialog.java:951)
------解决方案--------------------
dismiss是Dialog的非虚方法吧?为什么要覆盖它?
------解决方案--------------------
把你写的dismiss去掉,这个方法不用重写,直接调用即可。