我定义了一个OnItemClickListener
实现,可以在整个应用程序的多个“活动和片段”中使用。我当前在构造函数中传递Activity
,因此我可以调用startActivity
而不会出错。我不确定这是否合适。
我做错了什么吗?
public class EventSelectedListener implements AdapterView.OnItemClickListener {
private Activity mActivity;
private Context mContext;
public EventSelectedListener(Activity activity) {
mActivity = activity;
mContext = mActivity.getApplicationContext();
}
@Override
public void onItemClick(AdapterView<?> parent, View v, int position, long id) {
Intent intent = new Intent();
intent.setClass(mContext, MediaPlayerActivity.class);
mActivity.startActivity(intent);
}
}
最佳答案
应用程序的上下文和活动的上下文不是同一回事。在您的代码中,您应该使用Activity的上下文。
更改此:
mContext = mActivity.getApplicationContext();
对此:
mContext = mActivity;
要么
另外,您甚至不必费心保留一个单独的上下文对象,因为您的mActivity已经引用了上下文。因此,只需在需要引用上下文的地方使用mActivity:
public class EventSelectedListener implements AdapterView.OnItemClickListener {
private Activity mActivity;
public EventSelectedListener(Activity activity) {
mActivity = activity;
}
@Override
public void onItemClick(AdapterView<?> parent, View v, int position, long id) {
Intent intent = new Intent();
intent.setClass(mActivity, MediaPlayerActivity.class);
mActivity.startActivity(intent);
}
}