Java 尝试在fragmentA中调用方法rom fragmentB并使用NPE

Java 尝试在fragmentA中调用方法rom fragmentB并使用NPE,java,android,nullpointerexception,Java,Android,Nullpointerexception,我解决不了这个问题。我认为FragmentTransaction的工作原理类似于“我创建片段,我打开它”,但这是错误的。我的问题是,当我从FragmentB调用方法时,我得到了NPE,就像我的值没有初始化一样。那现在怎么办 问题是,当我尝试调用方法configureSettingsMinus时,其位置位于抽屉中单击的项上 result.setOnDrawerItemClickListener(new Drawer.OnDrawerItemClickListener() {

我解决不了这个问题。我认为FragmentTransaction的工作原理类似于“我创建片段,我打开它”,但这是错误的。我的问题是,当我从FragmentB调用方法时,我得到了NPE,就像我的值没有初始化一样。那现在怎么办

问题是,当我尝试调用方法configureSettingsMinus时,其位置位于抽屉中单击的项上

     result.setOnDrawerItemClickListener(new Drawer.OnDrawerItemClickListener() {
            @Override
            public boolean onItemClick(View view, int position, IDrawerItem drawerItem) {
                FragmentTransaction ft = getChildFragmentManager().beginTransaction();
                ft.addToBackStack(null);
//                settingsFragment.configureSettingsMenus(position);
                result.closeDrawer();
//                ft.add(settingsFragment, "settingsFragment");
                if (settingsFragment != null && settingsFragment instanceof SettingsFragment) {
                    settingsFragment.configureSettingsMenus(position);
                    settingsFragment.show(ft, DIALOG_SETTINGS);
                }
                return true;
            }
        });
这是片段B中的方法

public void configureSettingsMenus(int position) {
    switch (position) {
        case TRADING_HISTORY:
            settingsText.setText("fragment 0");
            break;
        case LEADER_BOARD:
            settingsText.setText("fragment 1");
            break;
        case SPECIAL_OFFER:
            settingsText.setText("fragment 2");
            break;
        case VIDEO_TUTORIALS:
            settingsText.setText("fragment 3");
            break;
        case FAQ:
            settingsText.setText("fragment 4");
            break;
        case CONTACT:
            settingsText.setText("fragment 5");
            break;
        default:

            break;
    }
}
我把所有的东西都放在奶油刀里。就像你看到你有设定值一样,我试着为每个选择的位置设定设定值

我在
settingsText.setText的片段b中得到了NPE

并在片段A中的
设置片段。配置设置菜单(位置)

怎么了?任何帮助都是适当的

编辑:


在片段之间直接通信不是一种好的做法。您必须在片段中编写一个接口,并让附加的活动实现该接口

在你的片段中:

public interface DrawerClickCallbacks{
        public void onItemClick(int position);
    }
在您的活动中:

public void onItemClick(int position) {
    settingsFragment.configureSettingsMenus(position);
}

您必须在附加到片段的活动中实现DrawerClickCallbacks,

发布日志。您的
设置文本
为空。你应该再检查一下。
public void onItemClick(int position) {
    settingsFragment.configureSettingsMenus(position);
}