我有一个默认的主从流程,这是在创建新项目时自动生成的。我的问题是:当我在详细信息侧面添加一个按钮时,是否有一种方式可以通过按下该按钮更新列表侧边栏?换句话说,ItemDetailFragment和ItemListFragment能够相互通信吗?
我有一个默认的主从流程,这是在创建新项目时自动生成的。我的问题是:当我在详细信息侧面添加一个按钮时,是否有一种方式可以通过按下该按钮更新列表侧边栏?换句话说,ItemDetailFragment和ItemListFragment能够相互通信吗?
是的,只需通过与监听器进行交互即可。
您的活动:
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!");
}
}
然后你的片段之间会像这样相互通信:fragmentA -> activity -> fragmentB。你的活动可以直接在片段上调用方法,而无需担心同步问题。
来自片段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;
}
}
}