1

私は ImageButton plus を持っています。クリックすると、ビューを膨張させる必要があります。

私の問題は、私が performClick を使用すると、Imagebutton が 2 回呼び出され、2 つのインフレートが同時に実行されることです。

なぜこれが起こるのかわかりません。

これが私のコードの一部です:

    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();
         }
     }

誰でも何か考えがありますか?

4

2 に答える 2

0

を呼び出しているコードの部分を再確認してくださいaddPhone.performClick();。その部分が2回呼び出されている可能性があります。

于 2012-12-27T14:26:05.937 に答える
0

ちょっと遅いですが、ボタンがクリックされたときにシステムが独自に performClick() を呼び出すため、コードで使用しないでください。

于 2014-01-20T16:20:08.403 に答える