我做了一個帶有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);
}
爲什麼出現這種情況的任何想法的代碼?
西蒙
哦,我明白了,這是一個功能,而不是一個錯誤!現在它完全合理! 謝謝 – SimonSays 2010-06-02 17:26:57