2010-06-02 31 views
2

我做了一個帶有2個屏幕的小測試應用程序。第一個屏幕包含一個EditText和一個Button。第二個屏幕只是一個簡單的ListActivity,顯示3個靜態項目。 ListActivity在用戶單擊第一個屏幕上的按鈕或在TextEdit中敲入回車鍵時啓動。奇怪的是,如果通過在EditText視圖中按下Enter鍵啓動ListActivity,則在啓動後立即選擇第一個列表項。如果它是通過點擊按鈕開始的,則一切正常 - 不選擇列表項目。從EditText事件啓動listactivity時選擇的第一個列表項目

這就是啓動ListActivity的代碼。

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.startup); 

    final Button b = (Button)findViewById(R.id.but); 
    b.setOnClickListener(new OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      startList(); 
     } 
    }); 

    final EditText t = (EditText)findViewById(R.id.in_text); 
    t.setOnEditorActionListener(new OnEditorActionListener() { 
     @Override 
     public boolean onEditorAction(TextView v, int actionId, KeyEvent event) { 
      startList(); 
      return true; 
     } 
    }); 
} 

public void startList(){ 
    Intent i = new Intent(this, TestList.class); 
    startActivity(i); 
} 

,這是ListActivity

@Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.list); 

     inflater = (LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE); 

     String[] str = {"a", "b", "c"}; 

     ListAdapter adapter = new ArrayAdapter<String>(this, R.layout.list_item, str){ 
      @Override 
      public View getView(int position, View convertView, ViewGroup parent) { 
       View row = 
         null == convertView ? 
         inflater.inflate(R.layout.list_item, null) : 
         convertView; 

       String s = getItem(position); 
       TextView tvid = (TextView)row.findViewById(R.id.word_suggestion_item_text); 
       tvid.setText(s); 

       return row; 
      } 
     }; 

     setListAdapter(adapter); 
    } 

爲什麼出現這種情況的任何想法的代碼?

西蒙

回答

1

奇怪的是,如果ListActivity 被壓入的EditText視圖中的回車鍵 開始,然後第一 列表項的 啓動後正確選擇。如果它是通過點擊按鈕 開始的,一切正常 - 沒有 列表項被選中。

如果他們在啓動ListActivity之前立即使用硬件輸入(例如,Enter鍵),它們將不會處於觸摸模式。如果他們在啓動ListActivity之前立即使用觸摸屏,它們將處於觸摸模式。在觸摸模式下不會顯示選擇高亮顯示。有關更多信息,請參閱here

+0

哦,我明白了,這是一個功能,而不是一個錯誤!現在它完全合理! 謝謝 – SimonSays 2010-06-02 17:26:57

相關問題