2013-10-11 3 views
2

Я нашел FocusChange поведения EditText другим, когда EditText в ListView. В моей тестовой программе есть два EditText. Однажды на Activity, еще одна в списке.EditText в поведении ListView

Ниже журнал при вводе текста в нормальном Editext и потерял фокус

10-11 16:26:32.440: INFO/Test(4317): 1:onFocusChange:false 
10-11 16:26:32.490: INFO/Test(4317): 2:onFocusChange:true 

Ниже журнал при вводе текста в Editext в виде списка и потерял фокус

10-11 16:28:17.551: INFO/Test(4317): 2:onFocusChange:false 
10-11 16:28:17.609: INFO/Test(4317): 2:onFocusChange:true 
10-11 16:28:17.679: INFO/Test(4317): 2:onFocusChange:false 
10-11 16:28:17.719: INFO/Test(4317): 1:onFocusChange:true 

Журналу сообщается, что EditText в представлении списка вызывает более 1 раза Фокусное изменение. Это ошибка или нет

Я использую android 4.0.3 sdk.

Ниже XML

<?xml version="1.0" encoding="utf-8"?> 

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
       android:orientation="vertical" 
       android:layout_width="match_parent" 
       android:layout_height="match_parent"> 

    <EditText 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:id="@+id/editText1" android:layout_gravity="center"/> 
    <ListView 
      android:layout_width="fill_parent" 
      android:layout_height="wrap_content" 

      android:id="@+id/listView"/> 
</LinearLayout> 

здесь код

public class EditTextActivity extends Activity { 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     super.setContentView(R.layout.edit_text_activity); 

     final EditText editText = (EditText) findViewById(R.id.editText1); 
     editText.setWidth(200); 
     editText.setOnFocusChangeListener(new View.OnFocusChangeListener() { 
      @Override 
      public void onFocusChange(View view, boolean hasFocus) { 
       Log.i("Test", "1:onFocusChange:" + hasFocus); 
       editText.setText(""); 
      } 
     }); 

     ListView listView = (ListView) this.findViewById(R.id.listView); 
     listView.setAdapter(new BaseAdapter() { 
      @Override 
      public int getCount() { 
       return 1; 
      } 

      @Override 
      public Object getItem(int i) { 
       return null; 
      } 

      @Override 
      public long getItemId(int i) { 
       return 0; 
      } 

      @Override 
      public View getView(int i, View view, ViewGroup viewGroup) { 
       LinearLayout layout = new LinearLayout(viewGroup.getContext()); 

       final EditText editText = new EditText(viewGroup.getContext()); 
       editText.setId(1); 
       editText.setLayoutParams(new ViewGroup.LayoutParams(200,ViewGroup.LayoutParams.WRAP_CONTENT)); 
       editText.setOnFocusChangeListener(new View.OnFocusChangeListener() { 
        @Override 
        public void onFocusChange(View view, boolean hasFocus) { 
         Log.i("Test", "2:onFocusChange:" + hasFocus); 
         editText.setText(""); 
        } 
       }); 

       layout.addView(editText); 

       return layout; 
      } 
     }); 

    } 
} 
+0

Как вы теряете фокус? Вы вставляете другой EditText? – Terry

+0

Я касаюсь другого EditText. – Eagle

ответ

-1

добавить ниже манифеста для вашего деятельность-

android:windowSoftInputMode="adjustPan" 
+0

Я добавил android: windowSoftInputMode = "adjustPan" в манифест для моей активности, но поведение такое же. Он все еще не решает – Eagle

0

EditText потери и восстановления фокуса не является ошибкой ; когда вы нажимаете клавишу на клавиатуре, клавиша получает фокус, но когда вы отпускаете ключ, edittext возвращает фокус. Что ты пытаешься сделать? Используется ли edittext для поиска и добавляется в список?