这里有任何Android开发者吗?我需要问一些关于不同片段之间的通信的事情,比如我从片段列表中选择一些东西,甚至片段2被另一个布局替换?
我在片段1中有listview适配器,在片段2中有它的视图。 在片段1中,我已经实现了onClickListener并通过从clicklistener方法获取位置来切换。我使用片段管理器,但没有得到我想要的方式。 请回复代码和说明! 任何帮助将不胜感激!
答案 0 :(得分:0)
如果我理解了您的问题,那么您尝试实施的内容是"master-detail" flow。让我们将您的第一个片段称为片段片段,将您的第二个片段称为细节片段,让我们假设它们都存在于父活动中。
要在列表片段和细节片段之间建立通信,您可以定义两个片段的父活动实现的回调接口。因此,在您的列表片段中,您将拥有:
public class MyListFragment extends ListFragment {
// Create a reference to your callback
private ListItemSelectedListener mCallback;
// Define your callback interface
public interface ListItemSelectedListener {
onListItemSelected(int position, Object data);
}
@Override
public void onListItemClick(ListView l, View v, int position, long id) {
// Send the event to the parent activity
mCallback.onListItemSelected(position, getData(position));
}
}
然后,您的父活动实现回调侦听器,并在必要时触发详细信息片段中的更改。
public class MasterDetailActivity extends Activity
implements MyListFragment.ListItemSelectedListener {
//....
// Implement the callback method defined in the interface
public void onListItemSelected(int position, Object data) {
// Get a reference to your detail Fragment
DetailFragment detailFragment = (DetailFragment)
getFragmentManager().findFragmentById(R.id.detail_fragment);
/* This is assuming both the list fragment and the detail fragment
* exist within the parent Activity
*/
if (detailFragment != null) {
detailFragment.changeDetailView(position, data);
}
}
}
查看Google的document on Fragment communication了解详情。