Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/325.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/221.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 从活动到片段的Android回调_Java_Android_Android Studio_Callback - Fatal编程技术网

Java 从活动到片段的Android回调

Java 从活动到片段的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();

我在主活动中覆盖了“OnOptions ItemSelected”方法,我想在点击操作栏项以更改列表上的语言时通知我的列表。如何从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();
    }
}

假设您的片段名为
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,你已经解决了,谢谢,我明白了!我不需要回调,我只是调用了公共方法来更改语言。谢谢,我收到了!我不需要回调,我只是调用公共方法来更改语言。