How to Define Callbacks in Android? How to Define Callbacks in Android? android android

How to Define Callbacks in Android?


In many cases, you have an interface and pass along an object that implements it. Dialogs for example have the OnClickListener.

Just as a random example:

// The callback interfaceinterface MyCallback {    void callbackCall();}// The class that takes the callbackclass Worker {   MyCallback callback;   void onEvent() {      callback.callbackCall();   }}// Option 1:class Callback implements MyCallback {   void callbackCall() {      // callback code goes here   }}worker.callback = new Callback();// Option 2:worker.callback = new MyCallback() {   void callbackCall() {      // callback code goes here   }};

I probably messed up the syntax in option 2. It's early.


When something happens in my view I fire off an event that my activity is listening for:

// DECLARED IN (CUSTOM) VIEW

    private OnScoreSavedListener onScoreSavedListener;    public interface OnScoreSavedListener {        public void onScoreSaved();    }    // ALLOWS YOU TO SET LISTENER && INVOKE THE OVERIDING METHOD     // FROM WITHIN ACTIVITY    public void setOnScoreSavedListener(OnScoreSavedListener listener) {        onScoreSavedListener = listener;    }

// DECLARED IN ACTIVITY

    MyCustomView slider = (MyCustomView) view.findViewById(R.id.slider)    slider.setOnScoreSavedListener(new OnScoreSavedListener() {        @Override        public void onScoreSaved() {            Log.v("","EVENT FIRED");        }    });

If you want to know more about communication (callbacks) between fragments see here:http://developer.android.com/guide/components/fragments.html#CommunicatingWithActivity


No need to define a new interface when you can use an existing one: android.os.Handler.Callback. Pass an object of type Callback, and invoke callback's handleMessage(Message msg).