【发布时间】:2012-10-12 12:01:15
【问题描述】:
我有默认的 Master-Detail 流程,它是在创建新项目时自动创建的。我的问题是。当我向详细信息侧添加按钮时。有没有办法通过按那个按钮来更新我的列表?也就是说,ItemDetailFragment 和 ItemListFragment 可以通信吗?
【问题讨论】:
标签: android android-fragments android-listfragment android-fragmentactivity
我有默认的 Master-Detail 流程,它是在创建新项目时自动创建的。我的问题是。当我向详细信息侧添加按钮时。有没有办法通过按那个按钮来更新我的列表?也就是说,ItemDetailFragment 和 ItemListFragment 可以通信吗?
【问题讨论】:
标签: android android-fragments android-listfragment android-fragmentactivity
是的,只需通过活动与侦听器进行通信。
您的活动:
public class MyActivity extends FragmentActivity implements OnFragmentClickListener {
@Override
public void OnFragmentClick(int action, Object object) {
switch(action) {
}
}
}
监听类:
public interface OnFragmentClickListener {
public void OnFragmentClick(int action, Object object);
}
然后,您的片段将在代码中的某处具有以下内容以实现接口:
@Override
public void onAttach(Activity activity) {
super.onAttach(activity);
try {
mListener = (OnFragmentClickListener) activity;
} catch (ClassCastException e) {
throw new ClassCastException(activity.toString() + " must implement listeners!");
}
}
然后你的片段像这样相互通信:片段A -> 活动 -> 片段B。您的 Activity 可以直接在 Fragment 上调用方法,而无需担心同步问题。
片段a的调用示例:
mListener.OnFragmentClick(GLOBAL_ACTION_KEY someObject);
Activity 然后处理:
public class MyActivity extends FragmentActivity implements OnFragmentClickListener {
@Override
public void OnFragmentClick(int action, Object object) {
switch(action) {
case GLOBAL_ACTION_KEY:
// you call fragmentB.someMethod();
break;
}
}
}
【讨论】: