我用2个屏幕制作了一个小测试应用程序。第一个屏幕包含EditText和Button。第二个屏幕只是一个简单的ListActivity,显示3个静态项目。 当用户单击第一个屏幕上的按钮或在TextEdit中单击回车键时,将启动ListActivity。奇怪的是,如果通过在EditText视图中按Enter键启动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);
}
为什么会发生这种情况的任何想法?
西蒙
答案 0 :(得分:1)
奇怪的是如果是ListActivity 按回车键启动 在EditText视图中,然后是第一个 列表项是在选中之后选择的 启动。如果它是通过击中开始的 按钮,一切正常 - 没有 列表项已被选中。
如果他们在您启动ListActivity
之前立即使用硬件输入(例如,输入密钥),则他们将不会处于触摸模式。如果他们在您启动ListActivity
之前立即使用触摸屏,则他们将处于触摸模式。选择突出显示未在触摸模式下显示。有关详情,请参阅here。