无法使用Asynctask键入Edittext

时间:2017-02-21 16:09:33

标签: java android android-asynctask bluetooth

我正在使用通过蓝牙模块获取某些参数的Android应用。

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

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

现在,当我触摸Edittext时,会弹出数字键盘。没问题,但是在一秒钟后它失去了焦点,因为Asynctask不断更新所有的Edittexts。

我的问题是,我应该停止我的定时asynctask,以便能够键入新值并将其写入我的设备然后再次启动我的计时器吗?

或者,最有效的方法是能够输入Edittext然后使用此值作为参数调用我的方法?

我很感激任何帮助。这是我的第一个应用程序,所以我在学习的时候......

public class RefreshListParams extends AsyncTask<String, Void, String>

{

@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();

    }
}

}

0 个答案:

没有答案