【问题标题】:button is called twice with performClick()使用 performClick() 调用按钮两次
【发布时间】:2012-12-27 14:23:03
【问题描述】:

我有一个 ImageButton plus。单击时,我需要对视图进行膨胀。

我的问题是,当我使用 performClick 时,Imagebutton 被调用了两次,并同时执行了两次充气。

我不明白为什么会这样。

这是我的一些代码:

    private ImageButton addPhone;
    addPhone = (ImageButton)view.findViewById(R.id.ac_ibAddClientPhone);

    addPhone.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                inflationFields = new InflatationFields(getActivity());
                inflationFields.inflateNewField("phone", containerPhone, view, adapterPhone);
            }
        });

在代码的另一部分中,我调用了按钮并尝试通过执行点击进行点击

        try{
     if(ccPhone.moveToFirst())  
         do{
             if(flag_first==true){ 
                 phone =  ccPhone.getString(ccPhone.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
                 Log.d(ClientEditContact.class.getName(), "PHONE: " +phone); 
                 type = ccPhone.getInt(ccPhone.getColumnIndex(ContactsContract.CommonDataKinds.Phone.TYPE));
                 etPhone = (EditText)viewPrincipal.findViewById(R.id.ac_etAddClientPhone);
                 etPhone.setText(phone + "" +etPhone.getTag().toString());
                 spPhone.setSelection(convertTypeToIdSpinner(type)); 
                 flag_first=false; 
             } 
             else if(flag_first == false){
                     addPhone.performClick(); 
                     phone = ccPhone.getString(ccPhone.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
                     type = ccPhone.getInt(ccPhone.getColumnIndex(ContactsContract.CommonDataKinds.Phone.TYPE));
                     etPhone = (EditText)viewContainerPhone.findViewWithTag("etTagPhone" + count);
                     etPhone.setText(phone + "" + etPhone.getTag().toString());

                     count = count + 1;
                     if(count==ccPhone.getCount()){
                         break;
                     }
             } 
         }while(ccPhone.moveToNext());       
     Log.d(ClientEditContact.class.getName(), "LAST PHONE ---> " +phone);
     }finally{
         if(ccPhone != null && ! ccPhone.isClosed()){
         ccPhone.close();
         }
     }

有人知道吗?

【问题讨论】:

    标签: android button onclick onclicklistener


    【解决方案1】:

    仔细检查您调用addPhone.performClick(); 的代码部分。可能是那部分被调用了两次。

    【讨论】:

    • 你好 jaibatrik。我检查了一下,问题不在于代码的一部分。问题出在 performClick() 和 setOnClickListener 中。但我会用这段代码更新我的问题....
    【解决方案2】:

    有点晚了,但是当单击按钮时系统会自行调用 performClick(),因此您不应该在代码中使用它。

    【讨论】:

      猜你喜欢
      • 2012-07-01
      • 2011-10-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-05-24
      相关资源
      最近更新 更多