Android:为什么onTouchListener()会打开多个警报对话框?

时间:2014-06-28 03:37:53

标签: android android-spinner ontouchlistener

我想在单击微调器时打开一个包含自动完成TextView的警告对话框。这里的代码

resNonRes = (Spinner)activity.findViewById(componentNameIdMap.get("SPINNER"));
resNonRes.setOnTouchListener(touch);

OnTouchListener touch = new OnTouchListener(){
    @Override
    public boolean onTouch(View v, MotionEvent event) {
        final AutoCompleteTextView av = new AutoCompleteTextView(activity);
        av.setAdapter((ArrayAdapter)resNonRes.getAdapter());
        AlertDialog.Builder builderSingle  = new AlertDialog.Builder(activity);
        builderSingle.setTitle("Exception");
        builderSingle.setView(av);
        builderSingle.setPositiveButton("Ok", new DialogInterface.OnClickListener() {
            public void onClick(DialogInterface dialog, int whichButton) {
                String avv = av.getText().toString();
                ArrayAdapter myAdap = (ArrayAdapter) resNonRes.getAdapter(); //cast to an ArrayAdapter
                int spinnerPosition = myAdap.getPosition(avv); //set the default according to value
                resNonRes.setSelection(spinnerPosition);
              }
            });
        builderSingle.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
              public void onClick(DialogInterface dialog, int whichButton) {
                  // Canceled.
              }
            });
        builderSingle.show();
        return false;
    }
};

但它会打开多个警告对话框。

我无法使用onclick侦听器,因为微调器不支持项目单击事件,因为我在项目中使用了对比,所以我无法使用onItemSelectedSpinner,因为我将它用作所有微调器的通用。

请建议......

1 个答案:

答案 0 :(得分:1)

因为你正在为所有触摸事件,向下,移动等做这件事。你应该只做它。