【问题标题】:String from Activity1 in Youtube player in Activity2活动 2 中 Youtube 播放器中活动 1 的字符串
【发布时间】:2025-11-25 11:55:02
【问题描述】:

在 youtube api 中,您将获得以下代码

@Override
public void onInitializationSuccess(Provider provider, YouTubePlayer player, boolean wasRestored) {
    if (!wasRestored) {
        player.cueVideo("C0DPdy98e4c"); // Plays https://www.youtube.com/watch?v=C0DPdy98e4c
    }
}

因为我想创建很多指向 youtube 的链接,所以我不希望每个 youtube 视频都有一个布局。我试图在 Activity1 中创建一个字符串,该字符串应该将 youtube 视频链接传输到 Activiy2。

Activity1 发送到 Activity2

private void button_les1Click()
{
    startActivity(new Intent("company.app.activity2"));
}

public void onClick(View v) {


    Intent videoId = new Intent(this, les_video.class);
    videoId.putExtra("C0DPdy98e4c", videoId); //Input Youtube link here


    switch (v.getId())
    {
        case R.id.button_les1:
            button_les1Click();
            break;
    }

    startActivity(videoId);
    finish();
}

这是不工作的部分,它无法检测到字符串值

    @Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);


    String videolink = getIntent().getExtras().getString("videoId");

    requestWindowFeature(Window.FEATURE_NO_TITLE);
    getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
            WindowManager.LayoutParams.FLAG_FULLSCREEN);

    setContentView(R.layout.activity_activity2);

    youTubeView = (YouTubePlayerView) findViewById(R.id.youtube_view);
    youTubeView.initialize(Config.YOUTUBE_API_KEY, this);
}

@Override
public void onInitializationSuccess(Provider provider, YouTubePlayer player, boolean wasRestored) {
    if (!wasRestored) {
        player.loadVideo(videolink); // Play link from videolink string
    }
}

您可能注意到我仍在学习这种很棒的语言,因为我认为这只是我现在不知道如何使用字符串的问题。有人能指出为什么字符串不起作用吗?

【问题讨论】:

    标签: java string youtube youtube-api


    【解决方案1】:

    您误用了 putExtra. putExtra 与键值对一起使用。键是一个字符串,它充当值的标识符或索引。该值可以是String, int, boolean, etc.

    密钥应该存储在 XML 中或作为常量存储在应用程序中的某个位置。

    换句话说,应该是这样的:

    public static final String KEY_VIDEO_LINK = "video_link";
    
    //...
    
    videoId.putExtra(KEY_VIDEO_LINK, "C0DPdy98e4c"); //assuming C0DPdy98e4c is the
    //String that you want to send to the next Activity.
    

    而在Activity2中,以常量为key读取:

    String videoLink = getIntent().getExtras().getString(Activity1.KEY_VIDEO_LINK);
    

    【讨论】: