2016-11-12 2 views
-1

Я нахожусь внутри класса, который не проходит в активность, и я пытаюсь получить доступ к методу startActivity, а также MainActivity сделать намерение, как это:Использование startActivity за пределами деятельности

Intent intent = new Intent(MainActivity, MusicasPlaylistActivity.class); 
PlayList item = (PlayList) adapter.getItem(position); 
intent.putExtra("id", item.getId()); 
startActivity(intent); 

Но внутри моего класс Я не вижу метод «startActivity», и я не вижу «MainActivity» ни потому, что мой класс не расширяет Activity, потому что он уже расширяет другой класс (называемый RecyclerView.ViewHolder).

Как я могу получить доступ к методу startActivity и MainActivity, чтобы сделать это?

+0

вы должны иметь контекст вашей деятельности там, так что используйте его как 'context.startActivity' плюс использовать этот' Intent (контекст, MusicasPlaylistActivity.class); ' –

+0

вы должны использовать обратный вызов/слушатель, чтобы сделать это. Не вызывайте начальную активность вне контекста. Используйте это https://gist.github.com/chowii/0e87e75b06e217b380ae5482b7c06c8e – sabbibJAVA

ответ

0

Как я могу получить доступ к методу startActivity и MainActivity, чтобы сделать целью?

Для этого вам нужен объект Context. Вы можете передать его конструктору или, в вашем случае, использовать RecyclerView.ViewHolderitemView, чтобы получить его. Например.

Intent intent = new Intent(itemView.getContext(), MusicasPlaylistActivity.class); 
PlayList item = (PlayList) adapter.getItem(position); 
intent.putExtra("id", item.getId()); 
itemView.getContext().startActivity(intent); 

itemView является public final View держать на RecyclerView.ViewHolder

+0

Это плохая практика, если вы пытаетесь сделать что-либо, связанное с представлением или контекстом, там. Имейте действие или фрагмент вызова MusicasPlaylistActivity, а не ваш ViewHolder. Для этого вам нужен обратный вызов. Не вызывайте начальную активность вне контекста. Используйте это как руководство gist.github.com/chowii/0e87e75b06e217b380ae5482b7c06c8e – sabbibJAVA

1

В контексте вашего прохода конструктору класса так:

public class YourClass{ 
    private Context context; 
    public YourClass(Context context){ 
    this.context = context; 
    } 
} 

затем

Intent intent = new Intent(MainActivity, MusicasPlaylistActivity.class); 
PlayList item = (PlayList) adapter.getItem(position); 
intent.putExtra("id", item.getId()); 
context.startActivity(intent); 
1

просто получить контекст acivity. затем позвоните.

Intent intent = new Intent(yourcontext, MusicasPlaylistActivity.class); 
PlayList item = (PlayList) adapter.getItem(position); 
intent.putExtra("id", item.getId()); 
yourcontext.startActivity(intent); 
0

Допустим, вы определяете метод «goToMusicasPlaylistActivity()» в классе неактивности.

public void goToMusicasPlaylistActivity(Context ctx) { 
    Intent intent = new Intent(ctx, MusicasPlaylistActivity.class); 
    PlayList item = (PlayList) adapter.getItem(position); 
    intent.putExtra("id", item.getId()); 
    ctx.startActivity(intent); 
} 
0

Вы можете использовать Context. В конструкторе класса вы можете инициализировать свой текст.

PlayList item = (PlayList) adapter.getItem(position); 
intent.putExtra("id", item.getId()); 
yourcontext.startActivity(intent); 
Смежные вопросы