Создаю экземпляр класса
public class AddFragment extends Fragment {
private DataBaseHelper myDb;
private Button writeButton, deleteButton;
private EditText namePassEdit, emailEditText, pasEditText, informationEditText;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.new_add_fragment, null);
initializeViews(rootView);
return rootView;
}
private void initializeViews(View rootView){
namePassEdit = rootView.findViewById(R.id.nameEditText);
emailEditText = rootView.findViewById(R.id.emailEditText);
pasEditText = rootView.findViewById(R.id.passwodEditText);
informationEditText = rootView.findViewById(R.id.infoEditText);
writeButton = rootView.findViewById(R.id.writeButton);
/*deleteButton = rootView.findViewById(R.id.delButton);
deleteButton.setVisibility(rootView.GONE);*/
writeButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
PassClass passClass = new PassClass();
passClass.setName(namePassEdit.getText().toString());
passClass.setEmail(emailEditText.getText().toString());
passClass.setPassword(pasEditText.getText().toString());
passClass.setInfo(informationEditText.getText().toString());
if (new DBAdapter(getActivity()).savePass(passClass)){
Toast.makeText(getActivity(), "SUCCESS", Toast.LENGTH_SHORT).show();
}
else {
Toast.makeText(getActivity(), "Not Saved", Toast.LENGTH_SHORT).show();
}
}
});
}
public void writeToSql(){
}
@Override
public void onDestroyView() {
super.onDestroyView();
}}
Есть идентичный фрагмент, который создается без проблем, вызываются фрагменты через общую функцию
private void setFragment(Fragment fragment) {
FragmentTransaction fragmentTransaction = getSupportFragmentManager().beginTransaction();
fragmentTransaction.replace(R.id.main_frame, fragment);
fragmentTransaction.commit();
}
Посмотрел в режиме отладке, увидел следующие. Думаю, что проблема в этом. Что это такое и как от этого избавится
Посмотрите, какое значение Вы передаёте в переменную
Fragment fragment
в методе
private void setFragment(Fragment fragment){}
и сравните с той переменной, которую вы передаёте при вызове setFragment(), где этот метод работает правильно. А вообще, Вы должны передавать новый инстанс фрагмента -
setFragment(new YourFragmentName());
P.s Дополните FragmentTransaction вот так:
FragmentTransaction ft = getFragmentManager().beginTransaction();
ft.replace(R.id.main_frame, fragment);
ft.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_FADE);
ft.addToBackStack(null);
ft.commit();
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости