我定义了一个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);
}
}
答案 0 :(得分:2)
应用程序的上下文和Activity的上下文不是一回事。在您的代码中,您应该使用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);
}
}