[英]Call method in fragment from another fragment/activity
我用這樣的片段制作了滑動 PageView http://www.androidhive.info/2013/10/android-tab-layout-with-swipeable-views-1/
Fragment2 具有函數myUpdate()
更新 Fragment2 中的一些數據(從 sql 到列表的數據)。 我可以在 Fragment2 中輕松調用它,但我還需要從 Fragment1 或其他 Activity 運行myUpdate()
,但我不知道如何運行。
我找到了幾種方法,但后來需要 R.id。 *或標記,我不知道在哪里可以找到它。
FragmentManager fm = getFragmentManager();
Fragment2 fragment = (Fragment2) fm.findFragmentByTag(<...>);
fragment.myUpdate();
或與findViewById
相同...我想我應該在 xml 中進行一些更改,但我不知道要更改什么...謝謝。
有多種方法可以實現這一點,一種是本地廣播。 為本地廣播實現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
}
}
};
您可以在第一個Fragment
為本地廣播注冊一個BroadcastReceiver
,如下所示:
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);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.