从另一个片段/活动中调用片段中的方法

时间:2014-04-19 14:42:32

标签: android android-fragments

我使用像http://www.androidhive.info/2013/10/android-tab-layout-with-swipeable-views-1/

这样的片段滑动了PageView

Fragment2具有函数myUpdate(),它更新Fragment2中的一些数据(从sql到list的数据)。我可以在Fragment2中轻松地调用它,但我还需要从Fragment1或其他Activity运行myUpdate(),我不知道如何。

我发现了一些方法,但后来需要R.id. * 或标签,我不知道在哪里可以找到它。

  FragmentManager fm = getFragmentManager();
  Fragment2 fragment = (Fragment2) fm.findFragmentByTag(<...>);
  fragment.myUpdate();

或与findViewById相同...... 我想我应该对xml进行一些更改,但我不知道要改变什么... 感谢。

1 个答案:

答案 0 :(得分:2)

实现这一目标有多种方法,一种是本地广播。为本地广播实现BroadcastReceiver与普通广播完全相同:

private BroadcastReceiver receiver = new BroadcastReceiver() {
    @Override
    public void onReceive(Context context, Intent intent) {

        String action = intent.getAction();
        if(action != null && action.equals("update")) {
            // perform your update
        }

    }
};

您可以在第一个BroadcastReceiver注册本地广播Fragment,如下所示:

LocalBroadcastManager broadcastManager = LocalBroadcastManager.getInstance(context);

IntentFilter intentFilter = new IntentFilter("update");
// Here you can add additional actions which then would be received by the BroadcastReceiver

broadcastManager.registerReceiver(receiver, intentFilter);

你可以发送这样的本地广播:

Intent intent = new Intent("update");

LocalBroadcastManager broadcastManager = LocalBroadcastManager.getInstance(context);
broadcastManager.sendBroadcast(intent);