错误或错误DialogPicker [英] Bug or error in DialogPicker

查看:232
本文介绍了错误或错误DialogPicker的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个EditText上,被点击的EditText时,它会显示一个DialogPicker。

i have a edittext, when edittext is clicked, it will show a DialogPicker.

我的目标:

static final int DATE_DIALOG_ID = 1;
private EditText txtDate;
private EditText tambah;

在这里我的code:

here my code:

txtDate = (EditText) rootView.findViewById(R.id.tanggal);
txtDate.setOnTouchListener(new OnTouchListener() {
        @Override
        public boolean onTouch(View arg0, MotionEvent arg1) {
            DialogFragment newFragment = new DialogFragment();
            FragmentTransaction ft = getFragmentManager().beginTransaction();
            //newFragment.setTxtDate(txtDate);
            newFragment.show(ft, "dialog");
            return true;

        }
    });

public static class SomeDialog extends DialogFragment {
    final Calendar c = Calendar.getInstance();
    private String[] arrMonth = {"Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"};
    int mYear = c.get(Calendar.YEAR);
    int mMonth = c.get(Calendar.MONTH);
    int mDay = c.get(Calendar.DAY_OF_MONTH);
    EditText txtDate;
    DatePickerDialog a;

    @Override
    public Dialog onCreateDialog(Bundle savedInstanceState) {
        if (a == null) {
            a = new DatePickerDialog(
                    getActivity(), mDateSetListener, mYear, mMonth, mDay);
        }
      return a;
  }
    public void setTxtDate(EditText a){
        txtDate = a;
    }
    public DatePickerDialog.OnDateSetListener mDateSetListener =
            new DatePickerDialog.OnDateSetListener()
            { 
            @Override
            public void onDateSet(DatePicker view, int year, int monthOfYear,int dayOfMonth) {
                mYear = year;
                mMonth = monthOfYear;
                mDay = dayOfMonth;
                String sdate = arrMonth[mMonth] + " " + LPad(mDay + "", "0", 2) + ", " + mYear;
                SomeDialog.this.txtDate.setText(sdate);                    
            }
            protected String LPad(String schar, String spad, int len) {
                String sret = schar;
                for (int i = sret.length(); i < len; i++) {
                    sret = spad + sret;
                }
                return new String(sret);
            }
        };
}   

当我点击的EditText中,日期选择器会显示人数超过一次。应该如何解决?只是信息,我用这个code片段。感谢您的回答。

when i click the edittext, the datepicker will show morethan once. how i fix it?, just info, i using a fragment in this code. thanks for your answer.

推荐答案

它不是错误。 onTouchListenr 调用ontouch 的EditText 的许多倍。就像当 MotionEvent.ACTION_DOWN和MotionEvent.ACTION_UP
所以你需要改变你的code像

Its not the Bug. onTouchListenr calls many times ontouch of EditText. like when MotionEvent.ACTION_DOWN and MotionEvent.ACTION_UP. so you need to change your code like

public boolean onTouch(View arg0, MotionEvent arg1) {
    if (arg1.getAction() == MotionEvent.ACTION_DOWN) {
        DialogFragment newFragment = new DialogFragment();
        FragmentTransaction ft = getFragmentManager().beginTransaction();
        // newFragment.setTxtDate(txtDate);
        newFragment.show(ft, "dialog");
    }
    return true;
}

这篇关于错误或错误DialogPicker的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆