调用片段活动错误无法实例化活动。无法转换为 android.app.Activity
Posted
技术标签:
【中文标题】调用片段活动错误无法实例化活动。无法转换为 android.app.Activity【英文标题】:Call Fragment Activity error Unable to instantiate activity. cannot be cast to android.app.Activity 【发布时间】:2020-08-11 18:44:20 【问题描述】:我需要帮助,对于在 recyclerview 上单击并打开新的片段活动,我在项目列表中单击关闭应用程序和 logcat 错误是:无法实例化活动 ComponentInfocom.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;
错误:
Error
【问题讨论】:
【参考方案1】:您正在尝试处理诸如活动之类的片段。 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
类或其任何子类。
要解决这个问题,可以:
-
通过扩展
AppCompatActivity
类使 Pem.class 成为 Activity
(或任何活动类),并替换活动的回调方法
而不是片段。
或者在当前activity和here进行fragment transaction 可以找到详情
【讨论】:
【参考方案2】:你使用这个: Intent 意图 = new Intent(v.getContext(), Pem.class); v.getContext().startActivity(intent);
但是Pem
是Fragment
,而不是Activity
。
【讨论】:
你想跳转哪个XXXActivity
,第二个参数就是XXXActivity.class
。以上是关于调用片段活动错误无法实例化活动。无法转换为 android.app.Activity的主要内容,如果未能解决你的问题,请参考以下文章
无法实例化活动组件信息 - java.lang.ClassNotFoundException