0

我正在尝试学习创建一个 Android 片段来实现一个可以在整个应用程序中重用的金额插入框。所以我创建了一个简单的 xml 文件,其中包含一些 EditText 框。然后我创建了名为 AmountFragment.java 的关联 java 文件:

public class AmountFragment extends Fragment {
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        View view = inflater.inflate(R.layout.amount_fragment, container, false);
        return view;
    }
}

然后我在另一个 xml 文件中使用这个片段:

<fragment 
    android:name="com.example.android.ui.widget.AmountFragment"
    android:id="@+id/transaction_amount"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    />

到目前为止,这工作正常。它显示片段很好,我可以在其中插入数字。我现在希望能够在 mainActivity 中获取插入的文本。因此,我从 Android 文档中阅读了有关 Fragments 的页面,但我完全迷失了。他们显示的代码对我来说毫无意义。我需要定义一个接口,但我不知道我必须用它做什么。我尝试简单地复制粘贴它,但我得到了一个 InflateException。因为我什至不知道发生了什么,所以我不知道在哪里寻找解决方案。

所以我的问题是:谁能给我一些关于如何将此片段与我使用它的活动接口的指示?

4

1 回答 1

1

试试下面的代码。

MainActivity.java添加

public void getMessage(Object obj) {
    Log.d("My App", "Look at my object " + obj.toString();
}

这将从您的 中获取对象AmountFragment,然后在您的AmountFragment写入中:

String anyObject = "Yay something";
((MainActivity)getActivity()).getMessage(anyObject);

这里发生的事情是,getActivity()它将获取包含片段的实例Activity,然后将其转换为您的活动MainActivity,并调用您为它编写的接收器方法。

于 2013-10-04T13:56:59.703 回答