Java 调用片段活动错误无法实例化活动。无法强制转换为android.app.Activity
我需要帮助,对于onclick on recyclerview和open new fragment activity,在item list close app中单击了im,logcat错误是:无法实例化活动组件信息{com.example.divemex/com.example.works.Pem}:java.lang.ClassCastException:com.example.works.Pem无法转换为android.app.activity 我的代码适配器:Java 调用片段活动错误无法实例化活动。无法强制转换为android.app.Activity,java,android,android-studio,fragment,adapter,Java,Android,Android Studio,Fragment,Adapter,我需要帮助,对于onclick on recyclerview和open new fragment activity,在item list close app中单击了im,logcat错误是:无法实例化活动组件信息{com.example.divemex/com.example.works.Pem}:java.lang.ClassCastException:com.example.works.Pem无法转换为android.app.activity 我的代码适配器: @Override
@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;
}
}
错误:
您可以使用:
Intent Intent=新的Intent(v.getContext(),Pem.class);
v、 getContext().startActivity(意图)
但是
Pem
是一个片段
,而不是活动
您正在尝试处理类似活动的片段。意图之一是开始新的活动,而不是片段
代码行下方出现异常,因为您使用Intent
来启动片段(因为Pem.class
是片段);碎片不能这样开始
Intent intent = new Intent(v.getContext(), Pem.class);
这在你得到的例外中是显而易见的
java.lang.ClassCastException:com.example.works.Pem不能强制转换为android.app.Activity
表示不允许将Pem.class强制转换为活动;这是因为它不扩展活动
类或其任何子类
要解决此问题,请执行以下操作之一:
通过扩展AppCompatActivity
class,使Pem.class成为活动
(或任何活动类),并替换该活动的回调方法
而不是碎片
或者在当前活动中进行片段事务,您可以找到详细信息
要跳转哪个xxx活动
,第二个参数将是xxx活动。将使用类
。