У меня проблемы с разработкой Android. Среда настроена на работу в минимальном API 23.
Вот чего я пытаюсь добиться:
У меня есть MainActivity
с BottomNavigationView
. При нажатии на элемент в BottomNavigationView
запускается фрагмент. Это работает очень хорошо, я могу отправлять данные во фрагмент и иметь интерфейс для диалога с моей деятельностью.
Проблема в следующем:
В моем последнем фрагменте (ProgramFragment
) я хотел бы создать мастер форм. Итак, я хотел бы запустить другие фрагменты из ProgramFragment
. Я использовал тот же метод, что и в MainActivity
, и я могу запустить первый фрагмент (RecStartFragment
), где есть кнопка в макете. Я хочу, чтобы при нажатии кнопки отображался следующий фрагмент (RecDataPatientFragment
). Когда я нажимаю на кнопку, появляется сообщение об ошибке:
java.lang.NullPointerException: Attempt to invoke interface method
'void x.RecStartFragment$OnRecStartFragmentListener.startRecProg()'
on a null object reference at
x.RecStartFragment$1.onClick(RecStartFragment.java:30)
Есть ли способ достичь этого? Почему это работает из деятельности, а не из фрагмента?
Вот код фрагмента RecStartFragment
package x;
import android.app.Fragment;
import android.content.Context;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
public class RecStartFragment extends Fragment {
private static final String TAG = RecStartFragment.class.getName();
private View v;
OnRecStartFragmentListener onRecStartFragmentListener;
private Button btnStartRec;
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, Bundle savedInstanceState) {
if(v != null) {
return v;
}
v = inflater.inflate(R.layout.fragment_rec_start, null);
btnStartRec = v.findViewById(R.id.btn_start_rec);
btnStartRec.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
onRecStartFragmentListener.startRecProg();
}
});
return v;
}
public interface OnRecStartFragmentListener
{
public void startRecProg();
}
@Override
public void onAttach(Context context) {
super.onAttach(context);
try {
onRecStartFragmentListener = (OnRecStartFragmentListener) context;
} catch (Exception e)
{
}
}
Заранее спасибо!