Как получить класс категорий для перехода в класс подкатегорий - PullRequest
0 голосов
/ 02 февраля 2020

Привет! В настоящее время я использую фрагменты для создания экрана категорий и экрана рейтинга, однако теперь я хочу добавить подкатегории к категориям при нажатии, однако теперь при нажатии на категорию теперь я получаю эту ошибку

(Невозможно создать экземпляр действия. ComponentInfo {com.example.educat / com.example.educat.SubCat}: java .lang.ClassCastException: com.example.educat.SubCat не может быть приведен к android .app.Activity)

Класс категорий в настоящее время выбирает категории из базы данных Firebase и перечисляет их, теперь я хочу щелкнуть по категории, чтобы перевести пользователя в подкатегории, также полученные из базы FireBase.

Любая помощь будет оценена.

public class CategoryFragment extends Fragment {

View myFragment;

RecyclerView listCategory;
RecyclerView.LayoutManager layoutManager;
FirebaseRecyclerAdapter<Category, CategoryViewHolder> adapter;
FirebaseDatabase database;
DatabaseReference categories;

public static CategoryFragment newInstance(){
    CategoryFragment categoryFragment =new CategoryFragment();
    return categoryFragment;
}
@Override
public void onCreate(@Nullable Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    database= FirebaseDatabase.getInstance();
    categories = database.getReference("Category");


}
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
    myFragment = inflater.inflate(R.layout.fragment_category,container,false);
    listCategory = (RecyclerView)myFragment.findViewById(R.id.listCategory);
    listCategory.setHasFixedSize(true);
    layoutManager = new LinearLayoutManager(container.getContext());
    listCategory.setLayoutManager(layoutManager);
    loadCategories();

    return myFragment;
}

private void loadCategories() {
    adapter = new FirebaseRecyclerAdapter<Category, CategoryViewHolder>(
            Category.class,
            R.layout.category_layout,
            CategoryViewHolder.class,
            categories
    ) {
        @Override
        protected void populateViewHolder(CategoryViewHolder viewHolder, final Category category, int position) {
            viewHolder.category_name.setText(category.getName());
            Picasso.with(getActivity())
                    .load(category.getImage())
                    .into(viewHolder.category_image);
            viewHolder.setItemClickListener(new ItemClickListener() {
                @Override
                public void onClick(View view, int position, boolean isLongClick) {
                    Intent startGame = new Intent(getActivity(),SubCat.class);
                    Common.categoryId = adapter.getRef(position).getKey();
                    Common.categoryName = category.getName();
                    startActivity(startGame);

                }
            });
        }
    };
    adapter.notifyDataSetChanged();
    listCategory.setAdapter(adapter);
}

public class SubCat extends Fragment {

View myFragment;

RecyclerView listCategory;
RecyclerView.LayoutManager layoutManager;
FirebaseRecyclerAdapter<Category, CategoryViewHolder> adapter;
FirebaseDatabase database;
DatabaseReference categories;

public static CategoryFragment newInstance(){
    CategoryFragment categoryFragment =new CategoryFragment();
    return categoryFragment;
}
@Override
public void onCreate(@Nullable Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    database= FirebaseDatabase.getInstance();

    categories = database.getReference("Subcategory");
}

@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
    myFragment = inflater.inflate(R.layout.fragment_category,container,false);
    listCategory = (RecyclerView)myFragment.findViewById(R.id.listCategory);
    listCategory.setHasFixedSize(true);
    layoutManager = new LinearLayoutManager(container.getContext());
    listCategory.setLayoutManager(layoutManager);
    loadCategories();

    return myFragment;
}

private void loadCategories() {
    adapter = new FirebaseRecyclerAdapter<Category, CategoryViewHolder>(
            Category.class,
            R.layout.category_layout,
            CategoryViewHolder.class,
            categories
    ) {
        @Override
        protected void populateViewHolder(CategoryViewHolder viewHolder, final Category category, int position) {
            viewHolder.category_name.setText(category.getName());
            Picasso.with(getActivity())
                    .load(category.getImage())
                    .into(viewHolder.category_image);
            viewHolder.setItemClickListener(new ItemClickListener() {
                @Override
                public void onClick(View view, int position, boolean isLongClick) {
                    //Toast.makeText(getActivity(),String.format("%s|%s",adapter.getRef(position).getKey(),category.getName()),Toast.LENGTH_SHORT).show();
                    Intent startGame = new Intent(getActivity(),Start.class);
                    Common.categoryId = adapter.getRef(position).getKey();
                    Common.categoryName = category.getName();
                    startActivity(startGame);

                }
            });
        }
    };
    adapter.notifyDataSetChanged();
    listCategory.setAdapter(adapter);
}
...