Я объявляю переменную представления в классе и присваиваю ее значение в OnCreateView, используя findviewbyid
, как обычно, и я использую интерфейс для взаимодействия между этим фрагментом и другим, когда другой фрагмент взаимодействует с этим фрагментом с помощью метода, называемого "ask" , в котором вызывается локальная переменная, я обнаружил, что переменная null
Вот переменная
private TextInputLayout questionLayout;
Здесь я присваиваю ее значение
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
View v = inflater.inflate(R.layout.fragment_article_, container, false);
Button ask = v.findViewById(R.id.ask);
questionLayout = v.findViewById(R.id.QuestionInputLayoutArticle);
if(questionLayout == null){
Log.d("ORDERARTICLE","QUESTION");
}
Log.d("ORDERORDER","CreateView");
return v;
}
Вот метод
@Override
public boolean ask() {
Log.d("ORDERORDER","ASK");
if(questionLayout == null){
Log.d("ORDERARTICLE","QUESTION");
}
if(questionLayout.getEditText().getText().toString().isEmpty()){
return false;
}else {
FirebaseFirestore Fs = FirebaseFirestore.getInstance();
Map<String, String> QuestionMap = new HashMap<>();
QuestionMap.put("Head", questionLayout.getEditText().getText().toString());
QuestionMap.put("Type", "Article");
Fs.collection("Questions").document().set(QuestionMap);
return true;
}
}
Вы можете заметить, что я веду журнал, чтобы убедиться, что значение присваивается перед вызовом переменной и оно присваивается перед вызовом действительно