我在onOptionsItemSelected(MenuItem item)方法里要实现每读一条记录延迟3秒对UI界面的EditText进行更新。现在问题是无法实现延迟,直接就把数据库最后一条记录显示在了EditText了,并且编译器不报错。(下面的代码写在onOptionsItemSelected()方法里,我也不知道对不对,但逻辑显示方面我必须把它写在该方法里,因为oncreate()先于onOptionsItemSelected()执行,否则无法实现我要的功能)。我分不多,全给你们了...while(cursor.moveToNext())
{
//no = cursor.getString(0);
recordname=cursor.getString(1);
// StudentsService.image = null;
// StudentsService.classes = cursor.getString(3);
// StudentsService.major = cursor.getString(4);
//new Students(no,name,image,classes,major);
final Handler myHandler = new Handler()
{
public void handleMessage(Message msg)
{
//如果该消息是本程序所发送的
if (msg.what == 0x1222)
{
studentnum.setText(recordname);//对UI线程的TextView进行更新
tts.speak(recordname,TextToSpeech.QUEUE_ADD, null);
System.out.print("ssss"+recordname);
}
}
};
new Timer().schedule(new TimerTask()
{
@SuppressLint({ "HandlerLeak", "HandlerLeak" })
@Override
public void run()
{
//新启动的线程无法访问该Activity里的组件
//所以需要通过Handler发送信息
Message msg = new Message();
msg.what = 0x1222;
//发送消息
myHandler.sendMessage(msg);
}
}, 3*1000);
}
cursor.close();
{
//no = cursor.getString(0);
recordname=cursor.getString(1);
// StudentsService.image = null;
// StudentsService.classes = cursor.getString(3);
// StudentsService.major = cursor.getString(4);
//new Students(no,name,image,classes,major);
final Handler myHandler = new Handler()
{
public void handleMessage(Message msg)
{
//如果该消息是本程序所发送的
if (msg.what == 0x1222)
{
studentnum.setText(recordname);//对UI线程的TextView进行更新
tts.speak(recordname,TextToSpeech.QUEUE_ADD, null);
System.out.print("ssss"+recordname);
}
}
};
new Timer().schedule(new TimerTask()
{
@SuppressLint({ "HandlerLeak", "HandlerLeak" })
@Override
public void run()
{
//新启动的线程无法访问该Activity里的组件
//所以需要通过Handler发送信息
Message msg = new Message();
msg.what = 0x1222;
//发送消息
myHandler.sendMessage(msg);
}
}, 3*1000);
}
cursor.close();
解决方案 »
- 昨天面试android遇到的一个奇葩问题.
- 如何使用android开发网站的移动客户端?(高分求资料和方法)
- Android平台下读取通讯录联系人信息,出现问题了。求英雄解释。。。
- Android的双指手势是怎么实现的?
- Android如何退出整个程序~?
- Waiting for HOME ('android.process.acore') to be launched...
- Activity页面跳转为什么会停止运行
- android xml pull解析
- 模拟器运行正常,真机测试出错
- private List<Userappinfo>allapplist;
- 推箱子,通关后退出键 回到主界面,setClass报错啊
- 安卓如何得到wifi连接的网络名称?
while(cursor.moveToNext()){
String recordname = cursor.getString(1);
//延时3秒更新一次UI线程
mDelayedHandler.postDelayed(runnable, 3 * 1000);
}
Runnable runnable = new Runnable() {
@Override
public void run() {
studentnum.setText(recordname);//对UI线程的TextView进行更新
tts.speak(recordname,TextToSpeech.QUEUE_ADD, null);
}
};
while(cursor.moveToNext())
{
no = cursor.getString(0);
studentnum.setText(no);//对UI线程的TextView进行更新
tts.speak(no,TextToSpeech.QUEUE_ADD, null);
//recordname=cursor.getString(1);
mDelayedHandler.postDelayed(new Runnable(){
public void run() {
// TODO Auto-generated method stub
}}, 5 * 1000);
}