java - 调用 fragment Activity 错误无法实例化 Activity 。无法转换为 android.app.Activity

标签 java android android-studio fragment adapter

我需要帮助,对于 onclick recyclerview 并打开新的 fragment Activity ,我在项目列表中单击关闭应用程序,并且 logcat 错误是:无法实例化 Activity 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);
            } });
    }

我的代码类 fragment :

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;
    }
}

错误:

Error

最佳答案

您正在尝试处理像 Activity 这样的 fragment 。 Intents 的目的之一是启动新的 Activity ,而不是 fragment 。

下面的代码行出现异常,因为您使用 Intent 来启动 Fragment (因为 Pem.class 是一个分段);并且 fragment 不能以这种方式启动。

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

这在你得到的异常中很明显 java.lang.ClassCastException:com.example.works.Pem 无法转换为 android.app.Activity

这表明不允许将 Pem.class 转换为 Activity;这是因为它不扩展 Activity 类或其任何子类。

要解决此问题,可以:

  1. 通过扩展 AppCompatActivity 类使 Pem.class 成为 Activity (或任何 Activity 类),并替换 Activity 的回调方法 而不是 fragment 。
  2. 或者在当前 Activity 中进行 fragment 事务并 here您可以找到详细信息

关于java - 调用 fragment Activity 错误无法实例化 Activity 。无法转换为 android.app.Activity,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61471971/

相关文章:

android - HTC 自动启动行为

android - Google Pay(Tez) 集成到我的支付网关中吗? (安卓)

java - 在从 Eclipse 导入的 Android Studio 项目中找不到 build.gradle(模块应用程序)

java - ModelMapper - 将 DTO 的属性映射到具有该属性的关系的实体内

java - 仅设置如果依赖于Gradle插件任务

java - AdMob 奖励视频广告的静态奖励金额

java - 非常困惑、一致的 Hibernate 查找问题?

针对 glibc 的 Android 静态链接与动态链接

java - 我希望我的 Android 应用程序能够打开所有文件扩展名

android - 由于 : 'null' - Android Studio 3. 5,安装失败