Android切换按钮点击设置文本视图

时间:2019-11-28 03:49:10

标签: java android

我是android开发的新手,我想在单击切换按钮时设置textview。单击切换按钮时,将调用长度操作方法,因此在此之前,我想设置一个文本视图,说“服务正在启动”,但是我注意到,一旦切换按钮状态从“开始”变为“停止”后,即会设置文本视图方法调用完成。

您能帮我在方法调用之前显示textview吗?

我已经解决了下面的代码。

@Override
protected void onResume() {
    super.onResume();
    Reader.getInstance(this,this);

    try {
        Thread.sleep(300);
    } catch (InterruptedException e) {
        e.printStackTrace();
    }


    toggle.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
        public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
            if (isChecked) {

                textView.setVisibility(View.VISIBLE);

                Thread t = new Thread(){
                    public void run(){
                        startMyService();
                    }
                };
                t.start();

                try {
                    t.join();
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }

                textView.setVisibility(View.GONE);                   

            }
            else {

                Thread t = new Thread(){
                    public void run(){
                        stopMyService();
                    }
                };
                t.start();
            }
        }
    });
}

谢谢。

我使用了以下代码,但是单击切换按钮后,没有任何显示。我尝试将冗长的代码放入线程中,但是即使在使用thread.join之后,该方法也没有执行。

1 个答案:

答案 0 :(得分:0)

尝试一下:

    class startservice_AsyncTask extends AsyncTask<Void, Void, Void> {
        @Override
        protected void onPreExecute() {
            super.onPreExecute();
             textView.setVisibility(View.VISIBLE);

        }

        @Override
        protected void onPostExecute(Void result) {
            super.onPostExecute(result);
            textView.setVisibility(View.GONE);  
        }

        @Override
        protected Void doInBackground(Void... params) {
            startMyService();
            return null;
        }
    }





toggle.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
        public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
            if (isChecked) {

                startservice_AsyncTask startserviceTask = new startservice_AsyncTask();
                startserviceTask.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
            }
            else {

                Thread t = new Thread(){
                    public void run(){
                        stopMyService();
                    }
                };
                t.start();
            }
        }
    });