2

请给我一些建议如何在片段和活动之间传递对象。

在我的项目中,有一个 FragmentActivity 可以显示和编辑客户资料。此活动中将包含多个选项卡以显示联系信息、地址...客户信息将作为活动中的一个类预加载。我的问题是如何将此对象传递给每个片段或选项卡?一旦更新,我怎么能传回活动?

我是否必须在我的客户类中实现 Parcelable 接口才能通过捆绑传递?

每个选项卡都是动态创建的,是否可以直接获取片段实例来修改视图?如果是,一旦选项卡切换,片段是否被破坏?

谢谢

迈伦

4

2 回答 2

2

毫无疑问:最好的解决方案是从片段中调用一个活动方法:

这是一个带有位图对象的示例。

在活动中:

定义你的方法:

public Bitmap getMyBitmap() {
    return myBitmap;
}

在片段中:

1 - 定义您的活动

private Activity_Main myActivity;

2 - 链接您的活动

@Override
public void onAttach(Activity myActivity) {
    super.onAttach(myActivity);
    this.activity= (Activity_Main) myActivity;
}

3 - 调用你的方法!

myActivity.getMyBitmap()

快捷方便!

于 2014-03-10T13:15:18.473 回答
0

您需要了解接口如何工作以及如何为片段设置标签以及如何按标签查找特定片段。你应该读这个...

http://developer.android.com/training/basics/fragments/communicating.html

要将对象发送给您的片段,这是基础。在活动中......

        // Create fragment and give it an argument for the selected article
        ArticleFragment newFragment = new ArticleFragment();
        Bundle args = new Bundle();
        args.putInt(ArticleFragment.ARG_POSITION, position);
        newFragment.setArguments(args);

        FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();

        // Replace whatever is in the fragment_container view with this fragment,
        // and add the transaction to the back stack so the user can navigate back
        transaction.replace(R.id.fragment_container, newFragment);
        transaction.addToBackStack(null);

        // Commit the transaction
        transaction.commit();

在片段上...

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
        Bundle savedInstanceState) {

    ScrollView scroller = new ScrollView(getActivity());
    TextView text = new TextView(getActivity());
    int padding = (int)TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP,
            4, getActivity().getResources().getDisplayMetrics());
    text.setPadding(padding, padding, padding, padding);
    scroller.addView(text);
    text.setText(Shakespeare.DIALOGUE[getShownIndex()]);
    return scroller;
}

getShownIndex 在哪里......

 public int getShownIndex() {
    return getArguments().getInt("index", 0);
}

如果您想从片段通信到活动,那么您需要接口。

于 2013-06-24T16:07:19.563 回答