Java 无法使用Asynctask键入Edittext

Java 无法使用Asynctask键入Edittext,java,android,android-asynctask,bluetooth,Java,Android,Android Asynctask,Bluetooth,我正在开发一款Android应用程序,它通过蓝牙模块获取某些参数 我为此设置了一个服务:我有一个计时器调用AsyncTask来读取这些值,并在任何值发生变化时更新我的Listview UI。一切似乎都很顺利 有些值是布尔值,有些是整数。我有整数文本框。如果用户触摸编辑文本,我希望用户能够键入一个新值,当他按下操作按钮时,调用某个方法将这个新值写入我的BT设备 现在,当我触摸编辑文本时,数字键盘弹出。没问题,但过了一秒钟,由于Asynctask正在不断更新所有EditText,因此它失去了焦点 我

我正在开发一款Android应用程序,它通过蓝牙模块获取某些参数

我为此设置了一个服务:我有一个计时器调用AsyncTask来读取这些值,并在任何值发生变化时更新我的Listview UI。一切似乎都很顺利

有些值是布尔值,有些是整数。我有整数文本框。如果用户触摸编辑文本,我希望用户能够键入一个新值,当他按下操作按钮时,调用某个方法将这个新值写入我的BT设备

现在,当我触摸编辑文本时,数字键盘弹出。没问题,但过了一秒钟,由于Asynctask正在不断更新所有EditText,因此它失去了焦点

我的问题是,我是否应该停止计时异步任务,以便能够键入新值并将其写入设备,然后再次启动计时器

或者,如果能够键入Edittext,然后使用此值作为参数调用我的方法,那么最有效的方法是什么

我非常感谢你的帮助。这是我的第一个应用程序,所以我边学边用

public class RefreshListParams extends AsyncTask<String, Void, String>
公共类RefreshListParams扩展异步任务
{

@覆盖
受保护的字符串doInBackground(字符串…参数)
{
//创建请求、获取数据和更新对象(serC)
}
@凌驾
受保护的void onPostExecute(字符串res)
{
super.onPostExecute(res);
做{
试一试{
睡眠(50);
}捕捉(中断异常e){
e、 printStackTrace();
}
}while(serC.data==null);
TextView textv;
CheckedTextView检查;
ListViewItem编辑;
试一试{
paramAdapter ad=(paramAdapter)pholder.listv.getAdapter();
int x=0;
字节[]b=序列数据;

对于(int i=0;i您不能在Ui线程之外的其他线程中更新Ui。但是您可以在活动中使用
runOnUiThread(new Runnable());
。或者在
onPostExecute()中进行更新
。我是否需要停止asynctask以显示光标并让用户看到他键入的内容?我是否可以查看您的
计时器asynctask
?用代码编辑了我的原始问题…为什么有
线程。睡眠(50)
@Override
protected String doInBackground(String... params)
{
   //Create request, get my data, and update my objects (serC)
}

@Override
protected void onPostExecute(String res)
{
    super.onPostExecute(res);

    do{
        try {
            Thread.sleep(50);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
    }while (serC.data == null);


    TextView textv;
    CheckedTextView check;
    ListViewItem edit;

    try {

        paramAdapter ad = (paramAdapter) pholder.listv.getAdapter();
        int x = 0;

        byte[] b = serR.data;

        for (int i =0; i<ad.objects.length; i++)
        {

            if (ad.getItemViewType(i) == paramAdapter.TYPE_CHECK)
            {
                textv = (TextView) pholder.view.findViewById(R.id.parameters);
                if (coilParam[i])
                    pholder.listv.setItemChecked(i, true);

                else
                    pholder.listv.setItemChecked(i, false);

            }
            else
            if (ad.getItemViewType(i) == paramAdapter.TYPE_VALUE)
            {
                edit = (ListViewItem) ad.getItem(i);

                                }
        }

        ad.notifyDataSetChanged();

    }catch (ClassCastException cce)
    {
        cce.printStackTrace();

    }
}