2015-07-01 5 views
0

Я пытаюсь создать приложение для Android с помощью gridview (http://www.rogcg.com/blog/2013/11/01/gridview-with-auto-resized-images-on-android) и медиаплеер (http://examples.javacodegeeks.com/android/android-mediaplayer-example/), пытаясь совместить два учебника, которые я нашел, чтобы можно было выбрать изображение из Активация GridView запускает деятельность MediaPlayer, которая будет воспроизводить песню.Начало деятельности. Нестатический метод нельзя ссылаться из статического контекста

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 
+1

Ребята, когда вы пишете неподдельно внимательно смотрите на вопросы! Он пробует называть намерение в классе, у которого нет информации о контексте! startActivity (i) - thats wrong – once2go

+0

В примере, который он принял, вид сетки сетки определен в классе активности, поэтому мы можем использовать startActivity (i) самостоятельно, не нужно никакого контекста там. – theLazyFinder

+0

Спасибо. Я попробовал 'startActivity (i);' он тоже работал. – Sthlm

ответ

3
v.getContext().startActivity(i); 

Получить контекст с вашей точкой зрения перед вызовом startActivity или использовать глобальный контекст По вашему уроку адаптера класса помещается в MainActivity.class Вот почему вы также можете использовать следующий тип вызова

MainActivity.this.startActivity(i); 
+1

Спасибо. Я попробовал 'startActivity (i);' он тоже работал. – Sthlm

0

Почему вы используетеMainActivity.startActivity(i);

Пожалуйста, используйте startActivity(i) insted.

-1

Удалить MainActivity просто используйте startActivity(i)

+0

Это не дает ответа на вопрос. Чтобы критиковать или просить разъяснения у автора, оставьте комментарий ниже их сообщения. – TryTryAgain

+0

Привет @TryTryAgain Посмотрите на комментарий от @Joe. Он говорит, что «startActivity (i);» работал на него. – GreenRobo

Смежные вопросы

 Смежные вопросы