Я не могу решить эту проблему. Я думаю, что FragmentTransaction работает как «я создаю фрагмент, я его открываю», но это происходит неправильно. Моя проблема в том, что когда я вызываю метод из FragmentB, я получил NPE, так как мои значения не инициализируются. Так что происходит сейчас.Попытка вызова метода rom фрагмента B в фрагменте A и имеющий NPE
Проблема возникает, когда я пытаюсь вызвать метод configureSettingsMenus с позицией на клик в элементе Drawer.
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;
}
}
Я инициализировать все нож для масла. Как и у, у вас есть настройкиText, я пытаюсь setText для каждой выбранной позиции.
Я получил NPE на settingsText.setText in fragmentB
и settingsFragment.configureSettingsMenus(position)
в Fragmenta
Что не так? Любая помощь должна быть одобрена.
EDIT:
Process: com.example.andrzej.forexapp, PID: 2329
java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.TextView.setText(java.lang.CharSequence)' on a null object reference
at com.example.andrzej.forexapp.activities.fragments.SettingsFragment.configureSettingsMenus(SettingsFragment.java:75)
at com.example.andrzej.forexapp.activities.fragments.MainGameFragment$2.onItemClick(MainGameFragment.java:156)
at com.mikepenz.materialdrawer.DrawerBuilder$5.onClick(DrawerBuilder.java:1716)
at com.mikepenz.materialdrawer.DrawerBuilder$5.onClick(DrawerBuilder.java:1690)
at com.mikepenz.fastadapter.FastAdapter$1.onClick(FastAdapter.java:492)
at android.view.View.performClick(View.java:5637)
at android.view.View$PerformClick.run(View.java:22429)
at android.os.Handler.handleCallback(Handler.java:751)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:154)
at android.app.ActivityThread.main(ActivityThread.java:6119)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:886)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:776)
размещает в LogCat .. – rafsanahmad007
Ваших 'settingsText' имеет значение NULL. Вы должны проверить еще раз. –