开始activity。不能从静态上下文中引用非静态方法

Start an activity. Non-static method cannot be referenced from a static context

我正在尝试使用 gridview(http://www.rogcg.com/blog/2013/11/01/gridview-with-auto-resized-images-on-android) and mediaplayer(http://examples.javacodegeeks.com/android/android-mediaplayer-example/) 制作一个 android 应用程序,试图结合我找到的两个教程,这样就可以 select 来自 GridView 的图像启动一个 MediaPlayer activity 来播放歌曲的活动。

GridView 教程建议这样做以启用点击:

    gridView.setOnItemClickListener(new AdapterView.OnItemClickListener()
    {
        public void onItemClick(AdapterView<?> parent, View v, int position, long id)
        {
            // this 'mActivity' parameter is Activity object, you can send the current activity.
            Intent i = new Intent(MainActivity.this, AndroidMediaPlayer.class);
            MainActivity.startActivity(i);
        }
    });

但我无法解决问题并收到警告:

Non-static method 'startActivity(android.content.Intent)' cannot be referenced from a static context

为什么要使用 MainActivity.startActivity(i);

请使用startActivity(i)代替。

v.getContext().startActivity(i);

在调用 startActivity 或使用全局上下文之前从您的视图中获取上下文 根据您的教程,您将适配器 class 放置在 MainActivity.class 这就是为什么您也可以使用下一种调用方式

MainActivity.this.startActivity(i);

删除 MainActivity 只需使用 startActivity(i)