After much research and a few conversations with colleagues, I learned that I could use a local BroadcastReceiver to achieve the communication between activities.
public class ActivityOne extends FragmentActivity {
public static final String MENU_ITEM_EVENT = "com.myApp.MenuItemEvent";
protected void onCreate(Bundle savedInstanceState) {
_updateMenuItemReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
_menuItem.getActionView().setVisibility(0);
}
};
_menuItem.getActionView().setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// this changes the menu item to show an animated spinner
_menuItem.setActionView(R.layout.actionbar_indeterminate_progress);
Intent intent = new Intent(ActivityOne.this, ActivityTwo.class);
startActivityForResult(intent, RESULT_SETTINGS);
}
});
}
@Override
protected void onResume() {
if (_updateMenuItemReceiver != null) {
LocalBroadcastManager.getInstance(this).unregisterReceiver(_updateMenuItemReceiver);
}
}
And the updated ActivityTwo
public class ActivityTwo extends FragmentActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
new AsyncTask<Void, Void, Cursor>() {
@Override
protected Cursor doInBackground(Void... params) {
// do some stuff that takes a bit
}
@Override
protected void onPostExecute(Cursor cursor) {
Intent intent = new Intent(ActivityOne.MENU_ITEM_EVENT);
LocalBroadcastManager.getInstance(MyApplication.getContext()).sendBroadcast(intent);
}
}
}
}