Fragment中的Android调用碎片方法

时间:2017-06-10 04:12:47

标签: android android-fragments

我有4个片段,我试图点击FragmentA上的一个按钮并调用一个方法来改变FragmentB上某些视图的可见性并填充它。

我尝试了一个界面,但我似乎无法让它在2个片段之间工作。如果我在活动中实现它,我可以从片段调用接口方法,但我不能在片段中实现它并在片段中调用它。

有不同的方法吗?我认为我不能使用static关键字。

2 个答案:

答案 0 :(得分:0)

我建议您可以使用广播接收器,很好地在任何地方执行操作并且易于使用。 在你的第一个片段中你可以定义接收器,你可以从另一个片段发送广播或动作。

示例如下。

在您要更新视图的第一个片段中编写以下代码,

private void registerReciver() {
        broadcastReceiver = new BroadcastReceiver() {
            @Override
            public void onReceive(Context context, Intent intent) {
                if (intent != null && intent.getAction().equals("UPDATE_FRAG_A")) {
                    // here you can fire your action which you want also get data from intent
                }
            }
        };
        IntentFilter intentFilter = new IntentFilter("UPDATE_FRAG_A");
        getActivity().registerReceiver(broadcastReceiver, intentFilter);
    }

在你的第二个片段中写下以下代码进行激活操作,

Intent intent=new Intent();
        // Here you can also put data on intent
        intent.setAction("UPDATE_FRAG_A");
        getActivity().sendBroadcast(intent);

答案 1 :(得分:0)

假设所有片段都处于相同的活动中。

  1. 在FragmentA中定义一个接口,它是一个监听器
  2. 通过公共方法公开你想在FragmentB中做什么
  3. 通过调用FragmentB的公共方法
  4. 在父活动中实现FragmentA的接口

    有关更多信息,请参阅Communicating with Other Fragments