I would be grateful if you help, because I have been sitting for half a week on this problem. In general, I first created a regular layout and later added Navigation Dravel from the standard template. I was too lazy and just moved the layout by deleting the fragment. Later I did a lot of things, but in general here
The application crashes when I click on SFLCl this is the button ShowTurnList.
package esport.inyourlife.insport.ui.gallery;
import android.content.Intent;
import android.os.Bundle;
import android.text.TextUtils;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ListView;
import android.widget.Toast;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.fragment.app.Fragment;
import androidx.lifecycle.ViewModelProvider;
import com.google.firebase.database.DataSnapshot;
import com.google.firebase.database.DatabaseError;
import com.google.firebase.database.DatabaseReference;
import com.google.firebase.database.FirebaseDatabase;
import com.google.firebase.database.Query;
import com.google.firebase.database.ValueEventListener;
import java.util.List;
import java.util.logging.ErrorManager;
import esport.inyourlife.insport.Constant;
import esport.inyourlife.insport.R;
import esport.inyourlife.insport.ShowTurnirs;
import esport.inyourlife.insport.Tournaments;
public class TournamentFragment extends Fragment {
private EditText TName, TAdres, TDate, TTime, Find;
private FirebaseDatabase isDB = FirebaseDatabase.getInstance();
private DatabaseReference isRef = isDB.getReference("Tournaments");
private ArrayAdapter adapter;
private List<String> listData;
private List<Tournaments> listTemp;
private ListView turnirs, findList;
private GalleryViewModel galleryViewModel;
private Button bFind, bCreate;
public View onCreateView(@NonNull LayoutInflater inflater,
ViewGroup container, Bundle savedInstanceState) {
galleryViewModel =
new ViewModelProvider(this).get(GalleryViewModel.class);
View root = inflater.inflate(R.layout.fragment_tournament, container, false);
//getDataFromDB(); //позже удалить нужно, не думаю что она должна находиться тут. Вместо этого шоутурниры
// setOnClickItem();
//turnirs = (ListView) getView().findViewById(R.id.TurnirList);
//init();
return root;
}
@Override
public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
init();
turnirs = getView().findViewById(R.id.TurnirList);
}
//присвоение элементов к переменным
private void init()//тут где то проблема нужно исправить 07.01
{
Toast.makeText(getActivity(), "Init", Toast.LENGTH_SHORT).show();
/*TName = TName.findViewById(R.id.edNameTournament);
TAdres = TAdres.findViewById(R.id.edAdres);
TDate = TDate.findViewById(R.id.edTrnirDate);
TTime = TTime.findViewById(R.id.edTrnirTime);
listData = new ArrayList<>();
listTemp = new ArrayList<>();
adapter = new ArrayAdapter<>(getActivity(), android.R.layout.simple_list_item_1, listData);
Find = Find.findViewById(R.id.edFindTournir);
bFind = bFind.findViewById(R.id.btnFind);
bCreate = bCreate.findViewById(R.id.btnCreate);*/
}
//верхнее меню, замена табхосту
public void STLCl(View view){
/*bFind.setVisibility(View.GONE);
bCreate.setVisibility(View.GONE);
Find.setVisibility(View.GONE);
TName.setVisibility(View.GONE);
TAdres.setVisibility(View.GONE);
TDate.setVisibility(View.GONE);
TTime.setVisibility(View.GONE);*/
turnirs.setVisibility(View.VISIBLE);
/* findList.setVisibility(View.GONE);
getDataFromDB();*/
}
public void SCcl(View view){
bFind.setVisibility(View.GONE);
bCreate.setVisibility(View.VISIBLE);
Find.setVisibility(View.GONE);
TName.setVisibility(View.VISIBLE);
TAdres.setVisibility(View.VISIBLE);
TDate.setVisibility(View.VISIBLE);
TTime.setVisibility(View.VISIBLE);
turnirs.setVisibility(View.GONE);
findList.setVisibility(View.GONE);
}
public void SFcl(View view){
bFind.setVisibility(View.VISIBLE);
bCreate.setVisibility(View.GONE);
Find.setVisibility(View.VISIBLE);
TName.setVisibility(View.GONE);
TAdres.setVisibility(View.GONE);
TDate.setVisibility(View.GONE);
TTime.setVisibility(View.GONE);
turnirs.setVisibility(View.GONE);
findList.setVisibility(View.VISIBLE);
}
//получение данных для первой вкладки Турниры
private void getDataFromDB()
{
ValueEventListener vListener = new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot snapshot) {
if (listData.size() > 0){listData.clear();}
if (listTemp.size() > 0){listTemp.clear();}
for (DataSnapshot ss : snapshot.getChildren()){
Tournaments tournaments = ss.getValue(Tournaments.class);
assert tournaments != null;
listData.add(tournaments.TournName);
listTemp.add(tournaments);
}
//adapter.notifyDataSetChanged();
//turnirs.setAdapter(adapter);
}
@Override
public void onCancelled(@NonNull DatabaseError error) {
}
};
isRef.addValueEventListener(vListener);
}
//получение фильтрованных данных для поиска
public void FindB(View view)
{
Query findQuery = isRef.child("Tournaments").orderByValue().equalTo(Find.getText().toString());
findQuery.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot snapshot) {
for (DataSnapshot ds : snapshot.getChildren()){
Tournaments tournaments = ds.getValue(Tournaments.class);
assert tournaments != null;
listData.add(tournaments.TournName);
listTemp.add(tournaments);
}
adapter.notifyDataSetChanged();
findList.setAdapter(adapter);
}
@Override
public void onCancelled(@NonNull DatabaseError error) {
Toast.makeText(getActivity(), error.getMessage().toString(), Toast.LENGTH_SHORT).show();
}
});
}
//кнопка добавления записи в турниры
public void btnCreateTournament(View view)
{
if (!TextUtils.isEmpty(TAdres.getText().toString()) && !TextUtils.isEmpty(TDate.getText().toString())){
String id = isRef.getKey();
String TourName = TName.getText().toString();
String TAdress = TAdres.getText().toString();
String ToDate = TDate.getText().toString();
String ToTime = TTime.getText().toString();
Tournaments newTrnir = new Tournaments(id, TourName, TAdress, ToDate, ToTime);
isRef.push().setValue(newTrnir);
if (newTrnir != null){
Toast.makeText(getActivity(), "Succecc", Toast.LENGTH_SHORT).show();
}
}
}
//слушатель нажатий на "турнир"
private void setOnClickItem()
{
turnirs.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
Tournaments tournaments = listTemp.get(position);
Intent i = new Intent(getActivity(), ShowTurnirs.class);
i.putExtra(Constant.TOUR_NAME, tournaments.TournName);
i.putExtra(Constant.TOUR_LINK, tournaments.TAdress);
i.putExtra(Constant.TOUR_DATE, tournaments.ToDate);
i.putExtra(Constant.TOUR_TIME, tournaments.ToTime);
startActivity(i);
}
});
}
//слушатель ошибок, не работает нужно удалить
public void onCancelled (ErrorManager errorManager){
Toast.makeText(getActivity(), errorManager.toString(), Toast.LENGTH_SHORT).show();
}
}
and XML:
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".ui.gallery.TournamentFragment">
<EditText
android:id="@+id/edFindTournir"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:ems="10"
android:inputType="textPersonName"
android:visibility="gone"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/shFind"
tools:visibility="gone" />
<Button
android:id="@+id/btnCreate"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:onClick="btnCreateTournament"
android:text="Создать"
android:visibility="gone"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/edTrnirTime"
tools:visibility="gone" />
<EditText
android:id="@+id/edAdres"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:ems="10"
android:hint="Место проведения"
android:inputType="textPersonName"
android:visibility="gone"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/edNameTournament"
tools:visibility="gone" />
<ListView
android:id="@+id/FindList"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:visibility="gone"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.0"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/btnFind"
tools:visibility="gone" />
<EditText
android:id="@+id/edTrnirDate"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:ems="10"
android:hint="Дата"
android:inputType="date"
android:visibility="gone"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/edAdres"
tools:visibility="gone" />
<EditText
android:id="@+id/edTrnirTime"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:ems="10"
android:hint="Время"
android:inputType="time"
android:visibility="gone"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/edTrnirDate"
tools:visibility="gone" />
<EditText
android:id="@+id/edNameTournament"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:ems="10"
android:hint="Название турнира"
android:inputType="textPersonName"
android:visibility="gone"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.0"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/shFind"
tools:visibility="gone" />
<Button
android:id="@+id/btnFind"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:onClick="FindB"
android:text="Поиск"
android:visibility="gone"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.0"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/edFindTournir"
tools:visibility="gone" />
<ListView
android:id="@+id/TurnirList"
android:layout_width="403dp"
android:layout_height="644dp"
android:visibility="gone"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/shFind"
tools:visibility="gone">
</ListView>
<ImageButton
android:id="@+id/ShowTurnList"
android:layout_width="97dp"
android:layout_height="43dp"
android:onClick="STLCl"
android:src="@drawable/common_google_signin_btn_icon_dark_normal_background"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
tools:visibility="visible" />
<ImageButton
android:id="@+id/shCreate"
android:layout_width="97dp"
android:layout_height="43dp"
android:layout_marginStart="96dp"
android:onClick="SCcl"
android:src="@drawable/common_google_signin_btn_icon_dark_normal_background"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
tools:visibility="visible" />
<ImageButton
android:id="@+id/shFind"
android:layout_width="97dp"
android:layout_height="43dp"
android:layout_marginStart="192dp"
android:onClick="SFcl"
android:src="@drawable/common_google_signin_btn_icon_dark_normal_background"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
tools:visibility="visible" />
</androidx.constraintlayout.widget.ConstraintLayout>
Sorry translated for the vocabulary in Google translator
package esport.inyourlife.insport.ui.gallery;
import android.content.Intent;
import android.os.Bundle;
import android.text.TextUtils;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ListView;
import android.widget.Toast;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.fragment.app.Fragment;
import androidx.lifecycle.ViewModelProvider;
import com.google.firebase.database.DataSnapshot;
import com.google.firebase.database.DatabaseError;
import com.google.firebase.database.DatabaseReference;
import com.google.firebase.database.FirebaseDatabase;
import com.google.firebase.database.Query;
import com.google.firebase.database.ValueEventListener;
import java.util.List;
import java.util.logging.ErrorManager;
import esport.inyourlife.insport.Constant;
import esport.inyourlife.insport.R;
import esport.inyourlife.insport.ShowTurnirs;
import esport.inyourlife.insport.Tournaments;
public class TournamentFragment extends Fragment {
/*private EditText TName, TAdres, TDate, TTime, Find;
private FirebaseDatabase isDB = FirebaseDatabase.getInstance();
private DatabaseReference isRef = isDB.getReference("Tournaments");
private ArrayAdapter adapter;
private List<String> listData;
private List<Tournaments> listTemp;*/
private ListView turnirs;
// private GalleryViewModel galleryViewModel;
//private Button bFind, bCreate;
public View onCreateView(@NonNull LayoutInflater inflater,
ViewGroup container, Bundle savedInstanceState) {
/*galleryViewModel =
new ViewModelProvider(this).get(GalleryViewModel.class);*/
View root = inflater.inflate(R.layout.fragment_tournament, container, false);
//getDataFromDB(); //позже удалить нужно, не думаю что она должна находиться тут. Вместо этого шоутурниры
// setOnClickItem();
//turnirs = (ListView) getView().findViewById(R.id.TurnirList);
//init();
return root;
}
@Override
public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
//init();
turnirs = getView().findViewById(R.id.TurnirList);
}
//присвоение элементов к переменным
/* private void init()//тут где то проблема нужно исправить 07.01
{
Toast.makeText(getActivity(), "Init", Toast.LENGTH_SHORT).show();
/*TName = TName.findViewById(R.id.edNameTournament);
TAdres = TAdres.findViewById(R.id.edAdres);
TDate = TDate.findViewById(R.id.edTrnirDate);
TTime = TTime.findViewById(R.id.edTrnirTime);
listData = new ArrayList<>();
listTemp = new ArrayList<>();
adapter = new ArrayAdapter<>(getActivity(), android.R.layout.simple_list_item_1, listData);
Find = Find.findViewById(R.id.edFindTournir);
bFind = bFind.findViewById(R.id.btnFind);
bCreate = bCreate.findViewById(R.id.btnCreate);
}*/
//верхнее меню, замена табхосту
public void STLCl(View view){
try{ /*bFind.setVisibility(View.GONE);
bCreate.setVisibility(View.GONE);
Find.setVisibility(View.GONE);
TName.setVisibility(View.GONE);
TAdres.setVisibility(View.GONE);
TDate.setVisibility(View.GONE);
TTime.setVisibility(View.GONE);*/
turnirs.setVisibility(View.VISIBLE);
/* findList.setVisibility(View.GONE);
getDataFromDB();*/
}catch(Exception e){
onPause();
Toast.makeText(getActivity(), e.getMessage(), Toast.LENGTH_SHORT).show();
e.printStackTrace(); }
}
/* public void SCcl(View view){
bFind.setVisibility(View.GONE);
bCreate.setVisibility(View.VISIBLE);
Find.setVisibility(View.GONE);
TName.setVisibility(View.VISIBLE);
TAdres.setVisibility(View.VISIBLE);
TDate.setVisibility(View.VISIBLE);
TTime.setVisibility(View.VISIBLE);
turnirs.setVisibility(View.GONE);
findList.setVisibility(View.GONE);
}
public void SFcl(View view){
bFind.setVisibility(View.VISIBLE);
bCreate.setVisibility(View.GONE);
Find.setVisibility(View.VISIBLE);
TName.setVisibility(View.GONE);
TAdres.setVisibility(View.GONE);
TDate.setVisibility(View.GONE);
TTime.setVisibility(View.GONE);
turnirs.setVisibility(View.GONE);
findList.setVisibility(View.VISIBLE);
}
//получение данных для первой вкладки Турниры
private void getDataFromDB()
{
ValueEventListener vListener = new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot snapshot) {
if (listData.size() > 0){listData.clear();}
if (listTemp.size() > 0){listTemp.clear();}
for (DataSnapshot ss : snapshot.getChildren()){
Tournaments tournaments = ss.getValue(Tournaments.class);
assert tournaments != null;
listData.add(tournaments.TournName);
listTemp.add(tournaments);
}
//adapter.notifyDataSetChanged();
//turnirs.setAdapter(adapter);
}
@Override
public void onCancelled(@NonNull DatabaseError error) {
}
};
isRef.addValueEventListener(vListener);
}
//получение фильтрованных данных для поиска
public void FindB(View view)
{
Query findQuery = isRef.child("Tournaments").orderByValue().equalTo(Find.getText().toString());
findQuery.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot snapshot) {
for (DataSnapshot ds : snapshot.getChildren()){
Tournaments tournaments = ds.getValue(Tournaments.class);
assert tournaments != null;
listData.add(tournaments.TournName);
listTemp.add(tournaments);
}
adapter.notifyDataSetChanged();
findList.setAdapter(adapter);
}
@Override
public void onCancelled(@NonNull DatabaseError error) {
Toast.makeText(getActivity(), error.getMessage().toString(), Toast.LENGTH_SHORT).show();
}
});
}
//кнопка добавления записи в турниры
public void btnCreateTournament(View view)
{
if (!TextUtils.isEmpty(TAdres.getText().toString()) && !TextUtils.isEmpty(TDate.getText().toString())){
String id = isRef.getKey();
String TourName = TName.getText().toString();
String TAdress = TAdres.getText().toString();
String ToDate = TDate.getText().toString();
String ToTime = TTime.getText().toString();
Tournaments newTrnir = new Tournaments(id, TourName, TAdress, ToDate, ToTime);
isRef.push().setValue(newTrnir);
if (newTrnir != null){
Toast.makeText(getActivity(), "Succecc", Toast.LENGTH_SHORT).show();
}
}
}
//слушатель нажатий на "турнир"
private void setOnClickItem()
{
turnirs.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
Tournaments tournaments = listTemp.get(position);
Intent i = new Intent(getActivity(), ShowTurnirs.class);
i.putExtra(Constant.TOUR_NAME, tournaments.TournName);
i.putExtra(Constant.TOUR_LINK, tournaments.TAdress);
i.putExtra(Constant.TOUR_DATE, tournaments.ToDate);
i.putExtra(Constant.TOUR_TIME, tournaments.ToTime);
startActivity(i);
}
});
}
//слушатель ошибок, не работает нужно удалить
public void onCancelled (ErrorManager errorManager){
Toast.makeText(getActivity(), errorManager.toString(), Toast.LENGTH_SHORT).show();
}*/
}
I commented everything, all the code that I wrote except SFLCl, nothing helped. At the moment, it should just show the ListView turnirs, but the error still remains