开发者

Android - Is it possible to use ui api in the other class and thread expect Activity?

I have some questions about android ui api.

Give a example, that I want to implement.

Main_UI_开发者_开发技巧Thread.java :

public class Main_UI_Thread extends Activity {
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        /*** do something about layout ***/
        ...

        DisplayClass dc = new DisplayClass();
        Thread th = new Thread(dc);
        th.start();
    }
}

DisplayClass.java :

public class DisplayClass extends Thread{
    @Override
    public void run() {
        if( something happen ) {
             to display Dialog or Toast show
             and handle the ui listener
        }
    }
}

I know the message passing can be do that;

But I want the ui program is be implemented in DisplayClass.java

Is it possible??

My English is not well.^^"

Thanks everybody to give me some suggestions. :P


Your DisplayClass would probably need a reference to your Activity instance, and modify the UI by calling the Activity's methods (or UI modifying methods that accept the Activity instance as an argument).

Also, remember to always use the runOnUiThread method to perform UI modifying actions from your "own" threads.

No need for DisplayClass to extend Thread if you are doing new Thread(dc);. Implementing Runnable is good enough.

public class DisplayClass extends Runnable {
    private Activity activity;
    public DisplayClass(Activity activity) {
        this.activity = activity;
    }
    @Override
    public void run() {
        if (something happen) {
            activity.runOnUiThread(new Runnable() {
                public void run() {
                    Toast.makeText(activity, "Hello", Toast.LENGTH_SHORT).show();
                }
            });
        }
    }
}
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜