コンテキスト、アクティビティ、フラグメントなどの概念/違いをまだ 100% 理解していないので、ご容赦ください。
SherlockFragment 内で getActivity() を呼び出すと ClassCastException が発生します (注: getSherlockActivity() も試してみましたが無駄でした):
public abstract class TaskGrabbingFragment extends SherlockFragment {
...
protected void transferGroupToMe() {
...
Backend.getInstance().modifyTask(new OnModifyTaskResponse() {
@Override
public void onModifyTask(Map<String, Object> response) {
refresh();
}
}, (MyActivity) getActivity(), //ClassCastException
TaskHelper.TASK_IDS, ids,
TaskHelper.EMPLOYEE_ID, DomaCareBackend.getInstance().getUserId());
}
}
私のlogcat出力:
FATAL EXCEPTION: main
java.lang.ClassCastException: com.mycom.task.AllTasksActivity cannot be cast to com.mycom.myapp.MyActivity
at com.mycom.myapp.task.TaskGrabbingFragment.transferGroupToMe(TaskGrabbingFragment.java:69)
at com.mycom.myapp.task.TaskGrabbingFragment.onContextItemSelected(TaskGrabbingFragment.java:47)
at android.support.v4.app.Fragment.performContextItemSelected(Fragment.java:1583)
at android.support.v4.app.FragmentManagerImpl.dispatchContextItemSelected(FragmentManager.java:1992)
at android.support.v4.app.FragmentActivity.onMenuItemSelected(FragmentActivity.java:370)
at com.actionbarsherlock.app.SherlockFragmentActivity.onMenuItemSelected(SherlockFragmentActivity.java:211)
MyActivity は SherlockFragmentActivity を拡張し、例外は TaskGrabbingFragment で発生しますが、getActivity() は SherlockFragment である AllTasksTabFragment を返します。それでは、SherlockFragment を SherlockFragmentActivity にキャストすることに対する規則はありますか? フラグメントをフラグメントアクティビティにキャストするには、どのようなソリューションがありますか?