如何在android中实现OnCancel侦听器
我这样称呼它,其中modal是一个按钮如何在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
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;