В моей исходной теме Запуск фрагмента из фрагмента приводит к отображению экрана по умолчанию Было определено, что мне нужно реализовать интерфейс для запуска моего второго фрагмента.
Достаточно просто, я реализовал интерфейсв моей деятельности и определил его в моем фрагменте.Однако, когда я запускаю метод моего интерфейса для запуска нового фрагмента, он дает мне это
java.lang.NullPointerException:
Attempt to invoke interface method 'void
rangers.socman.BattleRhythmFrag$doubleFrag.fragOut()' on a null object
reference at rangers.socman.BattleRhythmFrag.onClick(BattleRhythmFrag.java:151)
Обновление: исправлен код, связанный с интерфейсом, и это решило мою проблему Использование интерфейса для связи от фрагмента кактивность
Проходя через предложение, человек сказал, что я должен передать «это», чтобы фрагмент знал, что интерфейс должен взаимодействовать с деятельностью, имеет смысл.Я искал повсюду в Интернете и не могу найти никого, кто запускает фрагменты через интерфейсы.Это всегда передача / извлечение данных во фрагмент.Есть идеи?
Интерфейс определения фрагмента
@Override
public void onClick(View v) {
switch(v.getId()){
case R.id.newBattle:
{
// public doubleFrag testFrag
testFrag.fragOut();
}
case R.id.editBattle:
{
}
case R.id.deleteBattle:
{
}
break;
default:
{
}
}
}
public interface doubleFrag {
void fragOut();
}
Деятельность, в которой реализован интерфейс
@Override
public void fragOut() {
NewBattleFrag test = new NewBattleFrag();
FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
transaction.replace(R.id.home_content,test).addToBackStack(null).commit();
}