我使用像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进行一些更改,但我不知道要改变什么...
感谢。
答案 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);