android从另一个片段替换事件上的片段

时间:2015-03-29 05:54:38

标签: android

这里有任何Android开发者吗?我需要问一些关于不同片段之间的通信的事情,比如我从片段列表中选择一些东西,甚至片段2被另一个布局替换?

我在片段1中有listview适配器,在片段2中有它的视图。 在片段1中,我已经实现了onClickListener并通过从clicklistener方法获取位置来切换。我使用片段管理器,但没有得到我想要的方式。 请回复代码和说明! 任何帮助将不胜感激!

1 个答案:

答案 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了解详情。