2013-05-01 65 views
1

我在android中创建了一个包含EditText和ListView的自定义对话框。当我选择任何Item时,列表视图onItemClickListener会正确触发,但EditText的侦听器并非如此。EditText监听器在对话框中未被触发

这是我的代码:

EditText filterEditText; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

LayoutInflater factory = LayoutInflater.from(this); 
View content = factory.inflate(R.layout.dialog_layout, null); 
filterEditText = (EditText) content 
     .findViewById(R.id.filterEditText); 
filterEditText.addTextChangedListener(txtListener); 

............ 


    TextWatcher txtListener = new TextWatcher() { 

     @Override 
     public void onTextChanged(CharSequence arg0, int arg1, int arg2, 
       int arg3) { 

      filterEditText.setText("text entered"); 
     } 

     @Override 
     public void beforeTextChanged(CharSequence arg0, int arg1, int arg2, 
       int arg3) { 
      // TODO Auto-generated method stub 
     } 

     @Override 
     public void afterTextChanged(Editable arg0) { 
      // TODO Auto-generated method stub 
     } 
    }; 

回答

4

我正要删除帖子,但我决定把在任何情况下,面临着同样的问题的解决方案。我碰到了同样的问题,但在`DialogFragment`

public void createLocationsDialog() { 

    AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this); 

    builder.setTitle("Choose a location"); 

    LayoutInflater factory = LayoutInflater.from(MainActivity.this); 
    View content = factory.inflate(R.layout.dialog_layout, null); 

    ListView locationsList = (ListView) content 
      .findViewById(R.id.locationsListView); 
    filterEditText = (EditText) content 
      .findViewById(R.id.filterEditText); 

    ArrayAdapter<String> modeAdapter = new ArrayAdapter<String>(
      MainActivity.this, android.R.layout.simple_list_item_1, 
      data.getName()); 
    locationsList.setAdapter(modeAdapter); 

    builder.setView(content); 

    locationsDialog = builder.create(); 

    locationsList.setOnItemClickListener(listItemClicked); 
    filterEditText.addTextChangedListener(txtListener); 

    locationsDialog.show(); 
} 
+0

我通过移动从我的onCreate代码到我在其中创建对话框的方法解决它。为了更清楚地说明,在调用'builder.create()'之后添加'TextChangedListener'。 – Ivan 2017-06-02 17:45:20