簡體   English   中英

Android:對話框中無法點擊AutoCompleteTextView的建議

[英]Android: AutoCompleteTextView's suggestions not clickable inside Dialog

我試圖建立一個對話框,其中包含一個AutoCompleteTextView來提示用戶輸入信息。 盡管大多數工作正常,其中自動完成功能會顯示從數據庫加載的正確建議,但是單擊建議后,什么也不會發生,並且“文本”字段不會被自動完成建議所填充。 單擊建議后,會出現一個光標,好像在編輯建議本身,盡管這也不起作用。 我正在4.3版本的設備上運行它,所以我不認為這是問題所在。

實現警報對話框的Java代碼在這里:

public class MainActivity extends Activity {
public static final String PREFS_NAME = "ChosenGroupName";
public final static String EXTRA_MESSAGE = "com.example.tperm.MESSAGE";
@Override
protected void onCreate(Bundle savedInstanceState) {
    final SharedPreferences settings = getSharedPreferences(PREFS_NAME,0);
    final String previousGroupName = settings.getString("groupName", "No Group Specified");
    final SharedPreferences.Editor prefseditor = settings.edit();
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    final SamplesDataSource mSamplesDataSource = new SamplesDataSource(
            this);
   mSamplesDataSource.open();
   mSamplesDataSource.addGroupNameifUnique("No Group Specified");
   List<String> groupNames = mSamplesDataSource.getAllGroupNames(true);
   final Dialog dialog = new Dialog(this);
   dialog.setContentView(R.layout.group_name_dialog);
   dialog.setTitle("Please Enter a Group Name for the Samples");

  AlertDialog.Builder builder = new AlertDialog.Builder(this);
  ArrayAdapter<String> adapter = new ArrayAdapter<String>(builder.getContext(),R.layout.group_name_dialog,R.id.group_name_autocomplete,groupNames);

  LayoutInflater inflater = this.getLayoutInflater();
  View v = inflater.inflate(R.layout.group_name_dialog,null);

  final  AutoCompleteTextView groupNameAutocomplete = (AutoCompleteTextView) v.findViewById(R.id.group_name_autocomplete);
  groupNameAutocomplete.setAdapter(adapter);
  groupNameAutocomplete.setThreshold(1);
  groupNameAutocomplete.setPadding(0, 100, 100, 0);


  builder.setView(v)
  .setNegativeButton("Enter", new DialogInterface.OnClickListener(){
      @Override
      public void onClick(DialogInterface dialog, int id){
          if(groupNameAutocomplete.getText()!=null){
              String chosenGroupName = groupNameAutocomplete.getText().toString();
              prefseditor.putString("groupName", chosenGroupName);
              prefseditor.commit();
              mSamplesDataSource.addGroupNameifUnique(chosenGroupName);
              dialog.dismiss();
              Toast.makeText(getApplicationContext(), "Group Name is: "+ chosenGroupName +
                      ".  You may change this by going into the settings menu.",Toast.LENGTH_LONG).show();
          }
          else{
              Toast.makeText(getApplicationContext(), "No group name selected, you may use the last group name used for this system" +
                    " by selecting the \"use last group name\" button",Toast.LENGTH_LONG).show();
          }
      }
   })
   .setPositiveButton("Use Last Group name", new DialogInterface.OnClickListener() {
    @Override
        public void onClick(DialogInterface dialog, int id) {

              Toast.makeText(getApplicationContext(), "Group Name is: "+ previousGroupName +
                      ".  You may change this by going into the settings menu.",Toast.LENGTH_LONG).show();
            dialog.dismiss();// We will be getting the group name string from the prefs
            //and we already loaded the last group name.
        }
});
  builder.show();

}

對話框的自定義視圖的xml代碼如下:

    <?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
>

    <AutoCompleteTextView
        android:id="@+id/group_name_autocomplete"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_alignParentRight="true"
        android:layout_alignParentTop="true"
        android:ems="10"
        android:hint="Group Name" >

    </AutoCompleteTextView>

</RelativeLayout>

編輯:我想出了我的問題。 實例化ArrayAdapter以用於自動完成建議。 在resource參數中,您可以看到我指定了AutoCompleteTextView本身,而不是ndroid.R.layout.simple_dropdown_item_1line。

正確的行如下:

 ArrayAdapter<String> adapter = new ArrayAdapter<String>(builder.getContext(),android.R.layout.simple_dropdown_item_1line,R.id.group_name_autocomplete,groupNames);

編輯:我想出了我的問題。 實例化ArrayAdapter以用於自動完成建議。 在resource參數中,您可以看到我指定了AutoCompleteTextView本身,而不是應有的android.R.layout.simple_dropdown_item_1line。

正確的行如下:

 ArrayAdapter<String> adapter = new ArrayAdapter<String>(builder.getContext(),android.R.layout.simple_dropdown_item_1line,R.id.group_name_autocomplete,groupNames);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM