Ошибка действия фрагмента вызова Не удалось создать экземпляр действия. нельзя привести к android .app.Activity - PullRequest
0 голосов
/ 28 апреля 2020

Мне нужна помощь, чтобы щелкнуть по представлению реселлера и открыть новое действие фрагмента, я щелкнул в списке элементов закрыть приложение, и ошибка logcat: Невозможно создать экземпляр действия ComponentInfo {com.example.divemex / com.example.works.Pem}: java .lang.ClassCastException: com.example.works.Pem нельзя преобразовать в android .app.Activity

Адаптер моего кода:

@Override
    public void onBindViewHolder(final tramoView tramoView, final int i) {
        final TramoModel tramoModel = tramoList.get(i);
        tramoView.txtnombreMostrar.setText(tramoModel.getTramoName());
        tramoView.txtnombreMostrar.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
               Intent intent =  new Intent(v.getContext(), Pem.class);
                v.getContext().startActivity(intent);
            } });
    }

Мой фрагмент класса кода:

public class Pem extends  Fragment {

    private TabAdapter adapter;
    private TabLayout tableLayout;
    private ViewPager viewPager;

    @Nullable
    @Override
    public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        View view = inflater.inflate(R.layout.tabs, container, false);

        viewPager = view.findViewById(R.id.request_orders_view_pager);
        tableLayout = view.findViewById(R.id.request_orders_tabs);

        adapter = new TabAdapter(getFragmentManager());
       // adapter = new TabAdapter(FragmentActivity.getSupportFragmentManager());
        adapter.addFragment(new fragment1(), "Tab 1");
        adapter.addFragment(new fragment2(), "Tab 2");
        adapter.addFragment(new fragment3(), "Tab 3");
        adapter.addFragment(new fragment4(), "Tab 4");

        viewPager.setAdapter(adapter);
        tableLayout.setupWithViewPager(viewPager);

        return view;
    }
}

Ошибка:

Ошибка

Ответы [ 2 ]

0 голосов
/ 28 апреля 2020

Вы пытаетесь разобраться с такими фрагментами, как действия. Одна из целей Intents - запускать новые действия, но не фрагменты.

Вы получили исключение в строке кода ниже, потому что вы используете Intent для запуска Fragment (как Pem.class фрагмент); и фрагменты не могут начинаться таким образом.

Intent intent =  new Intent(v.getContext(), Pem.class);

И это очевидно в Исключении, которое вы получили java .lang.ClassCastException: com.example.works.Pem нельзя привести к android. app.Activity

Что указывает на то, что не разрешено приводить Pem.class к Activity; это потому, что он не расширяет класс Activity или какой-либо из его подклассов.

Чтобы решить эту проблему, либо:

  1. Сделайте Pem.class классом Activity, расширив AppCompatActivity class (или любой класс деятельности) и замените методы обратного вызова действия вместо фрагментированных.
  2. Или сделайте транзакцию фрагмента в текущей активности и здесь вы можете найти детали
0 голосов
/ 28 апреля 2020

Вы используете это: Intent intent = new Intent (v.getContext (), Pem.class); v.getContext (). startActivity (намерение);

Но Pem - это Fragment, а не Activity.

...