简体   繁体   中英

Update UI element from non-activity class

I have an Activity which creates a class that does some work. What is the typical Android method of having this class report back to the Activity in order to update the UI?

My activity, which creates the class:

public class MainActivity extends Activity {

    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        MyClass obj = new MyClass(this);
        obj.DoWork();
    }
}

The class that does the work, and wants to report back some

public class MyClass(Context context) {

    private Context context;

    public void DoWork() {
        //Do some work with a countdown timer
        //Report back some values 

    }
}

You can create your own interface like this:

public class MainActivity extends Activity {

    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        MyClass obj = new MyClass(this);
        obj.setOnWorkDoneListener(new MyClass.OnWorkDoneListener(){
            @Override
            public void onDone(Values values) {
                //Work done, use values
                updateUI(values);
            }
        });
        obj.DoWork();
    }
}

public class MyClass(Context context) {

    private Context context;
    public interface OnWorkDoneListener{
        void onDone(Values values);
    }
    
    private OnWorkDoneListener listener;

    public void setOnWorkDoneListener(OnWorkDoneListener listener){
       this.listener = listener;
    }

    public void DoWork() {
        //Do some work with a countdown timer
        when(workEnded) listener.onDone(backValues);

    }
}

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM