1

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);       
    }
}
4

1 に答える 1

2

アプリケーションのコンテキストとアクティビティのコンテキストは同じものではありません。コードでは、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);       
    }
}
于 2012-04-26T14:20:40.643 に答える