簡體   English   中英

從另一個片段/活動調用片段中的方法

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM