如何在android中实现OnCancel侦听器

如何在android中实现OnCancel侦听器,android,Android,我这样称呼它,其中modal是一个按钮 public class ModalityDialog extends Dialog implements OnClickListener, OnCancelListener { EditText capacity ; EditText color ; Button modal_ok ; String Capacity; String Color; public ModalityDialog(Context context) { super(c

我这样称呼它,其中modal是一个按钮

public class ModalityDialog extends Dialog implements OnClickListener, OnCancelListener {
EditText capacity ;
EditText color ;
Button modal_ok ;

String Capacity;
String Color;

public ModalityDialog(Context context) {
    super(context);
    /** It will hide the title */
    requestWindowFeature(Window.FEATURE_NO_TITLE);
    setContentView(R.layout.preferences);

    capacity = (EditText)findViewById(R.id.capacityInput);      
    color = (EditText)findViewById(R.id.ColorInput);        
    Button modal_ok = (Button)findViewById(R.id.modality_ok);
    modal_ok.setOnClickListener(this);
}

@Override
public void onClick(View v) {
    if (v == modal_ok){

        cancel();
    }
}

@Override
public void onCancel( DialogInterface dialog ){
    if( dialog == this){
        Capacity = capacity.getText().toString();           
        Color = color.getText().toString();

    }
}


 }
我得到以下错误

modal.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            ModalityDialog modalDialog = new ModalityDialog(InputInfo.this);
            modalDialog.show();}
    });
11-19 03:30:00.733:E/AndroidRuntime(305):致命异常:主
11-19 03:30:00.733:E/AndroidRuntime(305):java.lang.NullPointerException
11-19 03:30:00.733:E/AndroidRuntime(305):位于com.domain.ActivityEx.ModalityDialog。(ModalityDialog.java:38)
11-19 03:30:00.733:E/AndroidRuntime(305):在com.domain.ActivityEx.InputInfo$1.onClick(InputInfo.java:57)
11-19 03:30:00.733:E/AndroidRuntime(305):在android.view.view.performClick(view.java:2408)
11-19 03:30:00.733:E/AndroidRuntime(305):在android.view.view$PerformClick.run(view.java:8816)
11-19 03:30:00.733:E/AndroidRuntime(305):在android.os.Handler.handleCallback(Handler.java:587)上
11-19 03:30:00.733:E/AndroidRuntime(305):在android.os.Handler.dispatchMessage(Handler.java:92)上
11-19 03:30:00.733:E/AndroidRuntime(305):在android.os.Looper.loop(Looper.java:123)
11-19 03:30:00.733:E/AndroidRuntime(305):位于android.app.ActivityThread.main(ActivityThread.java:4627)
11-19 03:30:00.733:E/AndroidRuntime(305):在java.lang.reflect.Method.invokenactive(本机方法)
11-19 03:30:00.733:E/AndroidRuntime(305):在java.lang.reflect.Method.invoke(Method.java:521)
11-19 03:30:00.733:E/AndroidRuntime(305):在com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
11-19 03:30:00.733:E/AndroidRuntime(305):在com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
11-19 03:30:00.733:E/AndroidRuntime(305):在dalvik.system.NativeStart.main(本机方法)
调用onCancel函数后,我想得到变量Capacity、Color等的值。现在,对话框挂起并在将值放入变量之前结束。有人能建议我怎么做吗


提前感谢

为什么不在调用cancel()之前获取onclick方法中的值呢?

试试这个,看看这是否就是您想要做的

11-19 03:30:00.733: E/AndroidRuntime(305): FATAL EXCEPTION: main
11-19 03:30:00.733: E/AndroidRuntime(305): java.lang.NullPointerException
11-19 03:30:00.733: E/AndroidRuntime(305):  at com.domain.ActivityEx.ModalityDialog.   <init>(ModalityDialog.java:38)
11-19 03:30:00.733: E/AndroidRuntime(305):  at  com.domain.ActivityEx.InputInfo$1.onClick(InputInfo.java:57)
11-19 03:30:00.733: E/AndroidRuntime(305):  at android.view.View.performClick(View.java:2408)
11-19 03:30:00.733: E/AndroidRuntime(305):  at android.view.View$PerformClick.run(View.java:8816)
11-19 03:30:00.733: E/AndroidRuntime(305):  at android.os.Handler.handleCallback(Handler.java:587)
11-19 03:30:00.733: E/AndroidRuntime(305):  at android.os.Handler.dispatchMessage(Handler.java:92)
11-19 03:30:00.733: E/AndroidRuntime(305):  at android.os.Looper.loop(Looper.java:123)
11-19 03:30:00.733: E/AndroidRuntime(305):  at android.app.ActivityThread.main(ActivityThread.java:4627)
11-19 03:30:00.733: E/AndroidRuntime(305):  at java.lang.reflect.Method.invokeNative(Native Method)
11-19 03:30:00.733: E/AndroidRuntime(305):  at java.lang.reflect.Method.invoke(Method.java:521)
11-19 03:30:00.733: E/AndroidRuntime(305):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
11-19 03:30:00.733: E/AndroidRuntime(305):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
11-19 03:30:00.733: E/AndroidRuntime(305):  at dalvik.system.NativeStart.main(Native Method)

此外,用小写的起始字母命名字段是一种公认的惯例,并对名称中的每个单词进行大写

例如:

    @Override
        public void onClick(View v) {
            if (v == modal_ok){
                Capacity = capacity.getText().toString();                     
                Color = color.getText().toString();  

                cancel();
            }
        }

“挂起”是什么意思?对话没有被取消?所谓“挂起”,我的意思是我得到了一个错误。请发布你说你得到的错误,给我们日志信息。
String fooBar;
String theColorRed;