http://developer.android.com/training/basics/fragments/communicating.htmlによると、これはコミュニケーションの公式な方法であることに注意してくださいFragment
。Activity
public class HeadlinesFragment extends ListFragment {
OnHeadlineSelectedListener mCallback;
// Container Activity must implement this interface
public interface OnHeadlineSelectedListener {
public void onArticleSelected(int position);
}
@Override
public void onAttach(Activity activity) {
super.onAttach(activity);
// This makes sure that the container activity has implemented
// the callback interface. If not, it throws an exception
try {
mCallback = (OnHeadlineSelectedListener) activity;
} catch (ClassCastException e) {
throw new ClassCastException(activity.toString()
+ " must implement OnHeadlineSelectedListener");
}
}
@Override
public void onListItemClick(ListView l, View v, int position, long id) {
// Send the event to the host activity
mCallback.onArticleSelected(position);
}
}
ただし、次の手法を実行するコードに出くわしました。
@Override
public void onListItemClick(ListView l, View v, int position, long id) {
// Send the event to the host activity
((OnHeadlineSelectedListener)this.getActivity()).onArticleSelected(position);
}
これまでのところ、構成を変更した後でも動作することをテストしましたが、最新のActivity
.
Googleが推奨する方法以外に、この方法の背後に問題はありますか?たとえば、getActivity
null を返すことさえできますか?