runOnUiThread来自不支持它的类

Pau*_*aul 0 android

我正在使用cSipSimple编辑此代码:https://code.google.com/p/csipsimple/source/browse/trunk/CSipSimple/src/com/csipsimple/ui/incall/InCallCard.java? specl = svn2170 & r = 2170

并希望添加此方法:

public void pushtotalk2(final View view) {

        final boolean on = ((ToggleButton) view).isChecked();
        ((ToggleButton) view).setEnabled(false);

        new Thread(new Runnable() {
            @Override


    public void run() {
            try {
                Instrumentation inst = new Instrumentation();
                if (on) {

                    inst.sendKeyDownUpSync(KeyEvent.KEYCODE_NUMPAD_MULTIPLY);
                    Thread.sleep(500);
                    inst.sendKeyDownUpSync(KeyEvent.KEYCODE_9);
                    Thread.sleep(500);

                    runOnUiThread(new Runnable() {
                        public void run() {
                            ((ToggleButton) view).setBackgroundResource(R.drawable.btn_blue_glossy);
                            ((ToggleButton) view).setEnabled(true);
                        }
                    });
                } else {
                    inst.sendKeyDownUpSync(KeyEvent.KEYCODE_POUND);
                    Thread.sleep(500);
                    inst.sendKeyDownUpSync(KeyEvent.KEYCODE_9);
                    Thread.sleep(500);
                    runOnUiThread(new Runnable() {
                        public void run() {
                            ((ToggleButton) view).setBackgroundResource(R.drawable.btn_lightblue_glossy);
                            ((ToggleButton) view).setEnabled(true);
                        }
                    });
                }
            } catch (InterruptedException e) {
                Log.d(TAG, "Failed to send keycodes: " + e.getMessage());
            }
        }
    }).start();
}
Run Code Online (Sandbox Code Playgroud)

但是我得到错误: runOnUiThread(new Runnable(){}) is undefined for the type new Thread(){}

我的理解是activity类有这个方法,但是如何从我的代码中访问它?

我尝试制作一个构造函数并得到了这个错误:

Implicit super constructor FrameLayout() is undefined. Must explicitly invoke another constructor

关于如何正确完成这些的任何想法?

Car*_*nal 7

由于您希望在非线程的UI线程中运行某些内容,因此Activity您可以使用Handler.

new Handler().post(new Runnable() {
     public void run() {
         ((ToggleButton) view).setBackgroundResource(R.drawable.btn_blue_glossy);
         ((ToggleButton) view).setEnabled(true);
     }
});
Run Code Online (Sandbox Code Playgroud)