📅  最后修改于: 2023-12-03 15:05:22.054000             🧑  作者: Mango
在 Android 开发中,我们常常需要在适配器中使用 startActivity 来启动一个新的 Activity。但有时候,这个方法会不起作用,我们点击按钮也没有任何反应。下面是解决这个问题的方法。
在 Android 中,只有 activity 才能调用 startActivity 方法。适配器是在 activity 中调用的,因此适配器中调用 startActivity 方法时,必须使用 activity 的上下文。
我们可以通过以下步骤解决这个问题:
在适配器构造函数中,传入 activity 的上下文。例如:
public MyAdapter(Context context, List<Item> items) {
this.mContext = context;
this.mItems = items;
}
在适配器中使用 mContext.startActivity 方法来启动一个新的 Activity。例如:
Intent intent = new Intent(mContext, MyActivity.class);
mContext.startActivity(intent);
在 activity 的 onCreate 方法中,为适配器传入 activity 的上下文。例如:
MyAdapter adapter = new MyAdapter(this, items);
如果你使用的是 Fragment 中的列表,则需要在 onCreateView 方法中为适配器传入 activity 的上下文。例如:
MyAdapter adapter = new MyAdapter(getActivity(), items);
通过以上方法,我们可以在 Android 的适配器中使用 startActivity 来启动一个新的 Activity,并且可以确保它正常工作。