Ich versuche, eine DialogFragment über einen Adapter zu öffnen, ich habe die ganze Dokumentation und andere Fragen, ich kann das Problem nicht finden. Dies ist die vollständige Fehlerzeile aus dem Protokoll java.lang.NullPointerException: Attempt to invoke virtual method 'android.app.FragmentManager android.app.Activity.getFragmentManager()' on a null object reference
Android: zeigt dialogFrag auf Adapter gibt NullPointerException
Mein Adapter:
public class SubjectsAdapter extends RecyclerView.Adapter<SubjectsAdapter.ViewHolder> {
public List<String> items = new ArrayList<>();
public Activity mcontext;
public SubjectsAdapter(Activity context) {
this.mcontext=context.getParent();
assert mcontext != null;
}
//...usual adapter code here...
static int i;
class ViewHolder extends RecyclerView.ViewHolder{
public Button GridButton;
public ViewHolder(View itemView) {
super(itemView);
GridButton = (Button) itemView.findViewById(R.id.grid_button);
GridButton.setId(++i);
GridButton.setText("Button " + i);
assert GridButton != null;
GridButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//removeItem(getAdapterPosition());
Fragment_Subject_Edit newFragment = Fragment_Subject_Edit.newInstance();
newFragment.show(mcontext.getFragmentManager(), "Title");
}
});
}
}
}
die DialogFragment:
public static Fragment_Subject_Edit newInstance() {
return new Fragment_Subject_Edit();
}
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
LayoutInflater inflater = getActivity().getLayoutInflater();
// Pass null as the parent view because its going in the dialog layout
builder.setView(inflater.inflate(R.layout.fragment_subject_edit, null));
return builder.create();
}
Ok, so was bin ich hier fehlt meine DialogFragment zu zeigen, wenn Ich klicke in den GridButton?
Was passiert, wenn Sie nur 'mcontext = context;' zuweisen? Aus irgendeinem Grund, den Sie gerade verwenden 'mcontext = context.getParent();'? –
Okay, es hat funktioniert, vielen Dank! –