2016-11-12 67 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'加上使用'意圖(背景下,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); 

itemViewpublic 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

你可以使用右鍵。 在你的類構造函數中,你可以初始化你的上下文。

PlayList item = (PlayList) adapter.getItem(position); 
intent.putExtra("id", item.getId()); 
yourcontext.startActivity(intent); 
相關問題