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