Java 从活动到片段的Android回调
我在主活动中覆盖了“OnOptions ItemSelected”方法,我想在点击操作栏项以更改列表上的语言时通知我的列表。如何从MainActivity.java回调到我的ListFragmentJava 从活动到片段的Android回调,java,android,android-studio,callback,Java,Android,Android Studio,Callback,我在主活动中覆盖了“OnOptions ItemSelected”方法,我想在点击操作栏项以更改列表上的语言时通知我的列表。如何从MainActivity.java回调到我的ListFragment @Override public boolean onOptionsItemSelected(MenuItem item) { int id = item.getItemId(); if (id == R.id.action_exit) { finish();
@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();
}
}
假设您的片段名为
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();
}
}
在中,您可以对菜单进行充气。在中,您可以对菜单进行充气。您可以使用活动片段界面侦听器模式进行充气。 阅读更多关于它的信息。他们所做的与您所做的相反..fragment是使用相同的模式回调某个活动 您还可以使用FragmentManager查找所述片段,然后调用其公共方法
您还可以使用getActivity进行类型转换,并从片段中调用activity方法。[但是接口模式将很好地解决和解耦代码]您可以使用活动片段接口侦听器模式来实现这一点。 阅读更多关于它的信息。他们所做的与您所做的相反..fragment是使用相同的模式回调某个活动 您还可以使用FragmentManager查找所述片段,然后调用其公共方法
您还可以使用getActivity进行类型转换,并从片段中调用activity方法。[但是接口模式将很好地解决和分离代码]我试过了。我创建了监听器接口并在“onAttachFragment”方法上初始化,但我得到空指针异常“尝试调用接口方法'void thevoid.com.bookapp.MainActivity$OnLanguageSelectedListener.onSelectGe()”在空对象引用上“如果您可以放置代码,我很乐意为您修复它。”。哦,nvm,你已经解决了,我试过了。我创建了监听器接口并在“onAttachFragment”方法上初始化,但我得到空指针异常“尝试调用接口方法'void thevoid.com.bookapp.MainActivity$OnLanguageSelectedListener.onSelectGe()”在空对象引用上“如果您可以放置代码,我很乐意为您修复它。”。哦,nvm,你已经解决了,谢谢,我明白了!我不需要回调,我只是调用了公共方法来更改语言。谢谢,我收到了!我不需要回调,我只是调用公共方法来更改语言。