我有" 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);
}
答案 0 :(得分:2)
假设您的片段被称为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();
}
}
答案 1 :(得分:0)
在ListFragment内,您可以为菜单充气。
答案 2 :(得分:0)
您可以使用Activity - Fragment接口侦听器模式执行此操作。 android docs
阅读更多相关内容。here他们正在做与你相反的事情。片段是使用相同的模式回调活动。
你也可以使用FragmentManager找到所述片段,然后调用它的公共方法 你也可以使用getActivity TypeCast和来自fragment的调用活动方法。 [但接口模式可以很好地解决和解耦你的代码]