簡體   English   中英

Android從活動到片段的回調

[英]Android callback from activity to fragment

我在主要活動中覆蓋了“ onOptionsItemSelected”方法,我想在點擊操作欄項以更改列表語言時通知我的列表。 我如何從MainActivity.java回調到ListFragment。

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    int id = item.getItemId();

    if (id == R.id.action_exit) {
        finish();

        return true;
    } else if (id == R.id.action_en) {
        changeLanguageToEn();

        return true;
    } else if (id == R.id.action_ge) {
        changeLanguageToGe();

        return true;
    }

    return super.onOptionsItemSelected(item);
}

假設您的片段名為MyListFragment.java並具有一個名為changeLanguage()的方法,我通常使用以下方法來獲取當前片段:

FragmentManager fragmentManager = getSupportFragmentManager();
// (if you're not using the support library)
// FragmentManager fragmentManager = getFragmentManager();
for (Fragment fragment : fragmentManager.getFragments()) {
    if (fragment != null && fragment.isVisible() && fragment instanceof MyListFragment) {
        ((MyListFragment) fragment).changeLanguage();
    }
}

在您的ListFragment中 ,您可以為菜單充氣。

您可以使用“活動-片段”接口偵聽器模式來執行此操作。 Android文檔

了解更多信息。 在這里,他們所做的與您的相反。.片段使用相同的模式回調到活動。

您還可以使用FragmentManager並找到上述片段,然后調用其公共方法,也可以使用getActivity進行TypeCast並從片段中調用活動方法。 [但是接口模式將很好地解決和消除代碼重復]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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