为什么EditText.getText()的值不能即时得到

wangqi060934 2010-12-08 11:28:49
下面是下的代码,书上说TestView中能即时得到EditView中的值,但是我测试过,手机上也试过,好像不能及时得到啊


package com.yarin.android.Examples_04_06;

import android.app.Activity;
import android.os.Bundle;
import android.view.KeyEvent;
import android.view.View;
import android.widget.EditText;
import android.widget.TextView;

public class Activity01 extends Activity
{
private TextView m_TextView;
private EditText m_EditText;

/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);

m_TextView = (TextView) findViewById(R.id.TextView01);
m_EditText = (EditText) findViewById(R.id.EditText01);

m_TextView.setTextSize(20);
/**
* 设置当m_EditText中为空时提示的内容
* 在XML中同样可以实现:android:hint="请输入账号"
*/
m_EditText.setHint("请输入账号");

/* 设置EditText事件监听 */
m_EditText.setOnKeyListener(new EditText.OnKeyListener() {
@Override
public boolean onKey(View arg0, int arg1, KeyEvent arg2)
{
// TODO Auto-generated method stub
// 得到文字,将其显示到TextView中
m_TextView.setText("文本框中内容是:" + m_EditText.getText().toString());
return false;
}
});
}
}
...全文
1871 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
wangqi060934 2010-12-14
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 ameyume 的回复:]

增加以下监听
Java code
m_EditText.addTextChangedListener(new TextWatcher() {

public void afterTextChanged(Editable s) {
// TODO Auto-generated method stub
……
[/Quote]

bingo,3q
wangqi060934 2010-12-14
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 ameyume 的回复:]

引用楼主 wangqi060934 的回复:
下面是下的代码,书上说TestView中能即时得到EditView中的值,但是我测试过,手机上也试过,好像不能及时得到啊


package com.yarin.android.Examples_04_06;

import android.app.Activity;
import android.os.Bundle;
import ……
[/Quote]

你是在电脑上用键盘输入的吧,你用模拟器上的虚拟键盘输入看看...
ameyume 2010-12-11
  • 打赏
  • 举报
回复
[Quote=引用楼主 wangqi060934 的回复:]
下面是下的代码,书上说TestView中能即时得到EditView中的值,但是我测试过,手机上也试过,好像不能及时得到啊


package com.yarin.android.Examples_04_06;

import android.app.Activity;
import android.os.Bundle;
import android.view.KeyEvent;
i……
[/Quote]
楼主这样写也是可以即时得到输入的内容的。
刚又试了试,没问题。
可能是楼主的工程有问题,可以重新建个工程试试。
RamBo_jay 2010-12-10
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 ameyume 的回复:]
引用 5 楼 rambo_jay 的回复:
引用 2 楼 ameyume 的回复:
增加以下监听

Java code
m_EditText.addTextChangedListener(new TextWatcher() {

public void afterTextChanged(Editable s) {
// TODO Auto-generated method stub……
[/Quote]

嘿嘿,以后向你学习,快速出击
reggiekiller 2010-12-10
  • 打赏
  • 举报
回复
我照着书上来的,好像是没问题,是不是楼上说的几个问题啊
ameyume 2010-12-09
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 rambo_jay 的回复:]
引用 2 楼 ameyume 的回复:
增加以下监听

Java code
m_EditText.addTextChangedListener(new TextWatcher() {

public void afterTextChanged(Editable s) {
// TODO Auto-generated method stub
……


顶下,总是抢在我的前面啊
[/Quote]
不好意思,我还想说1L抢在我前面呢。
我当时先用setOnFocusChangeListener,结果不行,这样只有失去焦点时才能更新textView,然后就找到了addTextChangedListener,想这个应该行。
ameyume 2010-12-09
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 hyfeng_ccle 的回复:]
引用 5 楼 rambo_jay 的回复:
引用 2 楼 ameyume 的回复:
增加以下监听

Java code
m_EditText.addTextChangedListener(new TextWatcher() {

public void afterTextChanged(Editable s) {
// TODO Auto-generated method stub……
[/Quote]
绝对可用,亲身试验过的。
hyfeng_ccle 2010-12-09
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 rambo_jay 的回复:]
引用 2 楼 ameyume 的回复:
增加以下监听

Java code
m_EditText.addTextChangedListener(new TextWatcher() {

public void afterTextChanged(Editable s) {
// TODO Auto-generated method stub
……


顶下,总是抢在我的前面啊
[/Quote]

这个方法可用?
RamBo_jay 2010-12-09
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 ameyume 的回复:]
增加以下监听

Java code
m_EditText.addTextChangedListener(new TextWatcher() {

public void afterTextChanged(Editable s) {
// TODO Auto-generated method stub
……
[/Quote]

顶下,总是抢在我的前面啊
ameyume 2010-12-08
  • 打赏
  • 举报
回复
增加以下监听
		m_EditText.addTextChangedListener(new TextWatcher() {

public void afterTextChanged(Editable s) {
// TODO Auto-generated method stub

}

public void beforeTextChanged(CharSequence s, int start, int count,
int after) {
// TODO Auto-generated method stub

}

public void onTextChanged(CharSequence s, int start, int before,
int count) {
// TODO Auto-generated method stub
// 得到文字,将其显示到TextView中
m_TextView.setText("文本框中内容是:" + m_EditText.getText().toString());
}

});
yuhuaijun 2010-12-08
  • 打赏
  • 举报
回复

m_EditText.addTextChangedListener(new TextWatcher() {

public void afterTextChanged(Editable s) {
((TextView)findViewById(R.id.numcaratteri)).setText(String.format(getString(R.string.caratteri), s.length()));

}

public void beforeTextChanged(CharSequence s, int start, int count,
int after) {
// TODO Auto-generated method stub

}

public void onTextChanged(CharSequence s, int start, int before,
int count) {
// TODO Auto-generated method stub

}

});

本项目主要是对数据库进行增删改查操作 DBAdapter_mll类主要是对数据库进行操作的类 package bjedu.dky.mll; import android.content.ContentValues; import android.content.Context; import android.database.Cursor; import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteDatabase.CursorFactory; import android.database.sqlite.SQLiteException; import android.database.sqlite.SQLiteOpenHelper; public class DBAdapter_mll { private final String DB_NAME="people.db";//定义类中的变量 private final static String DB_TABLE="peopleinfo"; private final int DB_VERSION=1; public final static String KEY_ID="_id"; public final static String KEY_NAME="name"; public final static String KEY_AGE="age"; public final static String KEY_HEIGHT="height"; private final Context context; private SQLiteDatabase db; DBOpenHelper dbOpenHelper; public DBAdapter_mll(Context _context){//定义类的构造方法,给变量context赋 this.context=_context; } public long insert(People_mll people){//创建插入方法,并给四个变量赋 ContentValues newValues=new ContentValues(); newValues.put(KEY_NAME, people.name);//用put()方法将数据放入ContentValues对象中 newValues.put(KEY_AGE, people.age); newValues.put(KEY_HEIGHT, people.height); return db.insert(DB_TABLE, null, newValues); } public long deleteOneData(long id) {//定义有参数删除方法 return db.delete(DB_TABLE,KEY_ID+"="+id,null);//根据传的id来判断要删除的数据库中的列,返回删除的条数 } public long deleteAllData() {//定义全部删除方法 return db.delete(DB_TABLE,null,null);//删除数据库中所有的数据,返回删除的条数 } private People_mll [] convertToPeople(Cursor cursor){//定义People_mll类型的参数为游标类型的方法 int resultCounts=cursor.getCount();//获得返回记录的个数赋给变量 if(resultCounts==0||!cursor.moveToFirst()){//当记录的个数的为0或指针指向第一条记录时,执行花括号中的语句 return null; } People_mll[] peoples=new People_mll [resultCounts];//用People_mll类定义一个数组,数组的长度为记录的个数 for(int i = 0;i值赋给id peoples[i].name=cursor.getString(cursor.getColumnIndex(KEY_NAME));//将返回的列的赋给name peoples[i].height=cursor.getFloat(cursor.getColumnIndex(KEY_HEIGHT));//将返回的列的赋给height peoples[i].age=cursor.getInt(cursor.getColumnIndex(KEY_AGE));//将返回的列的赋给age cursor.moveToNext();//将指针移向下一条记录 } return peoples;//将peoples数组的返回 } public People_mll[] queryAllData(){//定义一个类型为People_mll更新全部记录的方法 //用query方法返回游标Cursor对象 Cursor results=db.query(DB_TABLE, new String[]{KEY_ID,KEY_NAME,KEY_AGE,KEY_HEIGHT}, null, null, null, null, null); return this.convertToPeople(results);//将results传给convertToPeople方法中的形参,并将peoples数组的返回 } public People_mll[] queryIdData(long id){//定义一个类型为People_mll更新全部记录的方法 //用query方法返回游标Cursor对象 Cursor results=db.query(DB_TABLE, new String[]{KEY_ID,KEY_NAME,KEY_AGE,KEY_HEIGHT}, KEY_ID+"="+id, null, null, null, null); return this.convertToPeople(results); } public long upData(long id,People_mll people){//更新数据方法 ContentValues newValues=new ContentValues();//要插入的字段 newValues.put(KEY_NAME, people.name);//用put()方法将数据放入ContentValues对象中 newValues.put(KEY_AGE, people.age); newValues.put(KEY_HEIGHT, people.height); return db.update(DB_TABLE, newValues, KEY_ID+"="+id, null); } public void open() throws SQLiteException{//打开数据库 dbOpenHelper=new DBOpenHelper(context,DB_NAME,null,DB_VERSION); try { db= dbOpenHelper.getWritableDatabase();//向数据库中写入数据获得一个可写入的SQliteDatabase对象 } catch (SQLiteException e){ db= dbOpenHelper.getReadableDatabase(); //从数据库中读取数据 } } public void close(){//关闭数据库 if (db!=null){ close(); db=null; } } private static class DBOpenHelper extends SQLiteOpenHelper{//定义一个类主要实现数据库中表的创建,数据更新功能 public DBOpenHelper(Context context, String name, CursorFactory factory, int version) { super(context, name, factory, version); // TODO Auto-generated constructor stub } //创建列名 private static final String DB_CREATE="create table "+DB_TABLE+"("+KEY_ID+ " integer primary key autoincrement,"+KEY_NAME+" text not null," +KEY_AGE+" integer,"+KEY_HEIGHT+" float);"; public void onCreate(SQLiteDatabase db) {//创建和初始化数据库中的表的等数据库对象 并且初始化表中的数据 // TODO Auto-generated method stub db.execSQL(DB_CREATE); } //当数据库中的数据的发生变化时 会调用此数据 public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { // TODO Auto-generated method stub db.execSQL("DROP TABLE IF EXITS"+DB_TABLE); onCreate(db); } } } package bjedu.dky.mll; import android.app.Activity; import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.EditText; import android.widget.TextView; import android.widget.Toast; public class SQLListDemoActivity extends Activity { DBAdapter_mll dbOpenHelper; public void onCreate(Bundle savedInstanceState) { dbOpenHelper =new DBAdapter_mll(this);//创建DBAdapter_mll类的对象 dbOpenHelper.open();//调用类中的方法 super.onCreate(savedInstanceState); setContentView(R.layout.main); Button addButton=(Button)findViewById(R.id.addButton);//找到在xml文件中的控件 Button allDeleteButton=(Button)findViewById(R.id.allDeleteButton); Button allXianShiButton=(Button)findViewById(R.id.allXianShiButton); Button idChaXunButton=(Button)findViewById(R.id.idChaXunButton); Button idDeleteButton=(Button)findViewById(R.id.idDeleteButton); Button idUpdataButton=(Button)findViewById(R.id.idUpdataButton); Button qingChuXianShiButton=(Button)findViewById(R.id.qingChuXianShiButton); final EditText ageEditText=(EditText)findViewById(R.id.ageEditText); final EditText heightEditText=(EditText)findViewById(R.id.heightEditText); final EditText idEditText=(EditText)findViewById(R.id.idEditText); final EditText nameEditText=(EditText)findViewById(R.id.nameEditText); final TextView shuChuTextView=(TextView)findViewById(R.id.shuChuTextView); final TextView resultTextView=(TextView)findViewById(R.id.resultTextView); addButton.setOnClickListener(new View.OnClickListener() {//给addButton添加事件监听 public void onClick(View v) { // TODO Auto-generated method stub People_mll people=new People_mll(); //首先判断输入框中是否为空 if(nameEditText.getText().toString().equals("")|| ageEditText.getText().toString().equals("")||heightEditText.getText().toString().equals("")) { Toast.makeText(SQLListDemoActivity.this, "请输入要添加的数据", Toast.LENGTH_LONG).show();//弹出一个即时窗口 } else{//不为空时,将输入输入框中的字符串赋给People_mll类中的变量 people.name=nameEditText.getText().toString(); people.age=Integer.parseInt(ageEditText.getText().toString()); people.height=Integer.parseInt(heightEditText.getText().toString()); long colunm=dbOpenHelper.insert(people);//调用DBAdapter中的方法,将people作为参数,将数据传入数据库 if(colunm==-1){ resultTextView.setText("添加失败");//重新设置TextView中的 }else{ resultTextView.setText("添加成功"); } } Toast.makeText(SQLListDemoActivity.this, "你点击了添加按钮", Toast.LENGTH_LONG).show(); } }); allDeleteButton.setOnClickListener(new View.OnClickListener() {//给全部删除按钮做事件监听 public void onClick(View v) { // TODO Auto-generated method stub shuChuTextView.setText(""); dbOpenHelper.deleteAllData();//调用DBAdapter类中的方法 Toast.makeText(SQLListDemoActivity.this, "全部删除成功", Toast.LENGTH_LONG).show(); } }); idDeleteButton.setOnClickListener(new View.OnClickListener() {//全部删除按钮做事件监听 public void onClick(View v) { People_mll[] peoples=dbOpenHelper.queryAllData(); if(idEditText.getText().toString().equals("")){//判断id输入框中是否有数据 Toast.makeText(SQLListDemoActivity.this, "请输入ID", Toast.LENGTH_LONG).show(); } else{//当输入框中有数据时,再给id赋 long id=Integer.parseInt(idEditText.getText().toString()); long colunm=dbOpenHelper.deleteOneData(id); if(colunm==0){//根据删除记录的条数判断是否删除成功 shuChuTextView.setText(""); resultTextView.setText("删除失败 数据库中无此数据"); }else{ shuChuTextView.setText(""); resultTextView.setText("删除成功"); Toast.makeText(SQLListDemoActivity.this, "删除成功", Toast.LENGTH_LONG).show(); } } } }); allXianShiButton.setOnClickListener(new View.OnClickListener() {//给全部显示做事件监听 public void onClick(View v) { // TODO Auto-generated method stub People_mll[] peoples=dbOpenHelper.queryAllData(); if(peoples==null){//判断peoples是否有 Toast.makeText(SQLListDemoActivity.this, "没有数据记录", Toast.LENGTH_LONG).show(); return ; } String mag =""; for(int i=0;iEditText.getText().toString().equals(""))//判断id是否有 { Toast.makeText(SQLListDemoActivity.this, "请输入要查询的id", Toast.LENGTH_LONG).show(); } else{//当id输入框中有时,再调用DBAdapter类中的方法 long id=Integer.parseInt(idEditText.getText().toString()); People_mll[] peoples=dbOpenHelper.queryIdData(id); if(peoples==null){//判断peoples是否有 shuChuTextView.setText(""); resultTextView.setText("查询失败 数据库中无此数据"); }else{ shuChuTextView.setText("查询结果"); shuChuTextView.setText(peoples[0].showAll());//将查询结果显示在TextView中 } } Toast.makeText(SQLListDemoActivity.this, "你点击了ID查询按钮", Toast.LENGTH_LONG).show(); } }); idUpdataButton.setOnClickListener(new View.OnClickListener() {//id更新按钮做事件监听 public void onClick(View v) { // TODO Auto-generated method stub People_mll people=new People_mll(); //判断输入框中是否有 if(nameEditText.getText().toString().equals("")||idEditText.getText().toString().equals("")|| ageEditText.getText().toString().equals("")||heightEditText.getText().toString().equals("")) { Toast.makeText(SQLListDemoActivity.this, "请完整输入要添加的数据", Toast.LENGTH_LONG).show(); } else//当输入框中都有时,再将输入框中的传入数据库中 { long id=Integer.parseInt(idEditText.getText().toString()); people.name=nameEditText.getText().toString(); people.age=Integer.parseInt(ageEditText.getText().toString()); people.height=Integer.parseInt(heightEditText.getText().toString()); long colunm=dbOpenHelper.upData(id, people);//调用DBAdapter类中的方法 if(colunm==-1){//根据更新记录的条数判断是否更新成功 resultTextView.setText("更新失败"); }else{ resultTextView.setText("修改"+String.valueOf(colunm)+"条记录成功"); } } Toast.makeText(SQLListDemoActivity.this, "你点击了ID更新按钮", Toast.LENGTH_LONG).show(); } }); qingChuXianShiButton.setOnClickListener(new View.OnClickListener() {//为清除按钮做事件监听 public void onClick(View v) { shuChuTextView.setText("");//清除shuChuTextView中的数据记录 resultTextView.setText("清除成功"); Toast.makeText(SQLListDemoActivity.this, "清除成功", Toast.LENGTH_LONG).show(); } }); } } package bjedu.dky.mll; public class People_mll {//创建一个类,主要定义变量 public String name; public float height; public int age; public int id=-1; public String showAll(){//定义一个将变量都加到一个字符串中方法,并将这个字符串的返回 String all; all="ID:"+this.id+" 姓名:"+this.name+" 年龄:"+this.age+" 身高:"+this.height; return all; } }

80,350

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧