在Activity外部使用startActivity

时间:2016-11-12 12:55:18

标签: android android-intent

我在一个没有扩展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以产生意图?

5 个答案:

答案 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);