Я сделал небольшое тестовое приложение с 2 экранами. Первый экран содержит EditText и кнопку. Второй экран - это просто ListActivity, показывающий 3 статических элемента.
ListActivity запускается, когда пользователь нажимает кнопку на первом экране или когда клавиша ввода была нажата в TextEdit. Странно то, что если ListActivity была запущена нажатием клавиши ввода в представлении EditText, тогда первый элемент списка выбирается сразу после запуска. если он был запущен нажатием кнопки, все нормально - элемент списка не выбран.
это код, который запускает 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);
}
есть идеи, почему это происходит?
Simon