我在一个没有扩展Activity的类中,我正在尝试访问方法startActivity和MainActivity来创建一个intent,如下所示:
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 :(得分: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 :(得分:1)
只需了解活动的背景。然后打电话。
Intent intent = new Intent(yourcontext, MusicasPlaylistActivity.class);
PlayList item = (PlayList) adapter.getItem(position);
intent.putExtra("id", item.getId());
yourcontext.startActivity(intent);
答案 2 :(得分:0)
如何访问startActivity方法和要生成的MainActivity 意图?
你需要一个Context
对象。您可以将其传递给构造函数,或者在您的情况下,使用RecyclerView.ViewHolder
itemView
来检索它。 E.g。
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
答案 3 :(得分: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);
}
答案 4 :(得分:0)
您可以使用上下文。 在类构造函数中,您可以初始化yourcontext。
PlayList item = (PlayList) adapter.getItem(position);
intent.putExtra("id", item.getId());
yourcontext.startActivity(intent);