在阅读Android4.0高级编程时,发现对EditText添加键盘响应的监听接口中"回车"的问题;
(1)如果使用 SDK版本< 16版时,点击回车可以正常提交;
(2)如果使用 SDK版本>=16 时,点击回车不会提交,而是换行;
<uses-sdk android:minSdkVersion="4" android:targetSdkVersion="17" />
代码如下:
AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.testlistadapter" android:versionCode="1" android:versionName="1.0" > <uses-sdk android:minSdkVersion="4" android:targetSdkVersion="17" /> <application android:allowBackup="true" android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:theme="@style/AppTheme" > <activity android:name="com.example.testlistadapter.MainActivity" android:label="@string/app_name" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application> </manifest>
code:
package com.example.testlistadapter; import java.util.ArrayList; import android.app.Activity; import android.os.Bundle; import android.text.TextUtils; import android.view.KeyEvent; import android.view.View; import android.widget.ArrayAdapter; import android.widget.EditText; import android.widget.ListView; public class MainActivity extends Activity { private EditText edt_input; private ListView lv_show; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); edt_input = (EditText) findViewById(R.id.edt_input); lv_show = (ListView) findViewById(R.id.lv_show); final ArrayList<String> arrayList = new ArrayList<String>(); final ArrayAdapter<String> arrayAdapter = new ArrayAdapter<String>( this, android.R.layout.simple_list_item_1, arrayList); edt_input.setOnKeyListener(new View.OnKeyListener() { @Override public boolean onKey(View v, int keyCode, KeyEvent event) { // TODO Auto-generated method stub if (event.getAction() == KeyEvent.ACTION_DOWN) { if (keyCode == KeyEvent.KEYCODE_DPAD_CENTER || keyCode == KeyEvent.KEYCODE_ENTER) { String str = edt_input.getText().toString(); if (TextUtils.isEmpty(str)) return false; else { arrayList.add(0, str); arrayAdapter.notifyDataSetChanged(); edt_input.setText(""); } return true; } } return false; } }); lv_show.setAdapter(arrayAdapter); } }