- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
各位程序员大家好,
我的 Android 应用程序遇到一些问题,目前 正在努力。为此,我只需提及我有两个 Activity (一个称为 MainActivity.class,第二个称为 FilterActivity.class)。
我的 MainActiviy 类的目的是显示电影(流派、 年份、评级等)+特定视频的预告片。
在 MainActiviy 的 OnCreate 方法中,我正在初始化 YouTubePlayerView(因为我希望一旦 您打开应用程序)。
我的 FilterActivity 类的目的是选择一些特定的 电影的搜索标准。
我从 MainActivity 打开 FilterActivity,如下所示:
public void openFilter(){
Intent askIntent = new Intent(this, FilterActivity.class);
startActivityForResult(askIntent, 1); }
在我的 FilterActivity 中,我从新发送的信息 创建了这样的电影:
movieIntent.putExtra("url", a.getUrl());
movieIntent.putExtra("title", a.getTitle());
movieIntent.putExtra("rating", (String.valueOf(a.getRating())));
movieIntent.putExtra("plot", a.getDesc());
movieIntent.putExtra("year", (String.valueOf(a.getYear())));
movieIntent.putExtra("genre", a.getGenres());
setResult(RESULT_OK, movieIntent);
finish();
这就是我从 MainActivity 获取数据的方式:
protected void onActivityResult(int requestCode, int resultCode, final Intent data){
if(resultCode == RESULT_OK){
titleView.setText(data.getStringExtra("title"));
ratingView.setText(data.getStringExtra("rating"));
plotView.setText(data.getStringExtra("plot"));
yearView.setText(data.getStringExtra("year"));
genreView.setText(data.getStringExtra("genre"));
url = data.getStringExtra("url"); }
这基本上就是我需要展示的内容。 (顺便说一句,这都是作品): 我正在获取一部新创建的电影并且符合标准。
但是,在 OnActivityResult 中,我无法将 YoutubePlayerView 获取到 使用特定 URL 重新加载视频。旧视频还在 并且可玩。我已经检查过,确实从以下位置获得了新的 URL FilterActivity。
我解决这个问题的唯一方法就是重新加载 Activity ,然后(因为我在我的 OnCreate 方法),条件不匹配。
如有任何建议,我们将不胜感激!
真诚的
最佳答案
在onActivityResult
中,释放当前播放器并重新初始化YoutubePlayerView
:
@Override
protected void onActivityResult(int requestCode, int resultCode, final Intent data) {
if (resultCode == RESULT_OK) {
mVideoId = getVideoId(data.getStringExtra("url"));
mPlayer.release();
mYoutubeplayerView.initialize(mApiKey, this);
}
}
MainActivity
的完整示例是:
public class MainActivity extends YouTubeBaseActivity implements YouTubePlayer.OnInitializedListener {
String mVideoId = "5xVh-7ywKpE";
String mApiKey = "YOUR_API_KEY";
YouTubePlayerView mYoutubeplayerView;
YouTubePlayer mPlayer;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mYoutubeplayerView = (YouTubePlayerView) findViewById(R.id.player);
mYoutubeplayerView.initialize(mApiKey, this);
Button button = (Button) findViewById(R.id.button);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
openFilter();
}
});
}
@Override
public void onInitializationSuccess(YouTubePlayer.Provider provider,
YouTubePlayer youTubePlayer, boolean b) {
mPlayer = youTubePlayer;
mPlayer.loadVideo(mVideoId);
}
@Override
public void onInitializationFailure(YouTubePlayer.Provider provider,
YouTubeInitializationResult youTubeInitializationResult) {
}
@Override
protected void onActivityResult(int requestCode, int resultCode, final Intent data) {
if (resultCode == RESULT_OK) {
mVideoId = getVideoId(data.getStringExtra("url"));
mPlayer.release();
mYoutubeplayerView.initialize(mApiKey, this);
}
}
private String getVideoId(String url) {
String pattern = "(?<=watch\\?v=|/videos/|embed\\/)[^#\\&\\?]*";
Pattern compiledPattern = Pattern.compile(pattern);
Matcher matcher = compiledPattern.matcher(url);
if (matcher.find()) {
return matcher.group();
}
return "";
}
public void openFilter() {
Intent askIntent = new Intent(this, FilterActivity.class);
startActivityForResult(askIntent, 1);
}
}
请注意,我使用了 this发布从 url 路径提取 Youtube videoId
关于java - 无法从二等舱重新加载 ActivityResult 上的 YouTube 视频,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42275033/
如何使用下面的代码调整图像大小?代码获取图像,但我不知道如何调整它的大小。 @Override protected void onActivityResult(int re
我正在尝试构建一个相机应用。 这是 MainActivity 的代码: public class MainActivity extends Activity { public static i
我正在使用下面介绍的方法来验证我正在测试的 Activity 是否启动了另一个 Activity。 Instrumentation.addMonitor (IntentFilter filter, I
我正在尝试开发 Android 应用程序,但其中的一部分遇到了问题。我正在尝试创建一个带有按钮的 Activity ,当单击该按钮时,它会将您发送到另一个 Activity ,您可以在其中编写名称,该
Cordova 是否有自动将 onActivityResult 传递给它的 CordovaPlugin 类的方法? 这是我当前的文件,手动执行: package com.myapp; import a
docs在测试 Fragments 时非常好,但是没有关于如何测试使用 ActivityResult 的 Activity 的信息。 我们应该如何在 Activity 测试中重写 activityRe
我正在尝试使用此处所述的 ActivityResult API ActivityResult APIs 但它给出了 Unresolved reference 错误。 我正在使用以下依赖项 api 'a
所以我想通过重写 onActivityResult 从图库加载图像。将 Intent 数据发送到另一个 Activity 的有效方法是什么? 当前使用此代码来获取图像路径,然后再将其发送到其他 Act
各位程序员大家好, 我的 Android 应用程序遇到一些问题,目前 正在努力。为此,我只需提及我有两个 Activity (一个称为 MainActivity.class,第二个称为 FilterA
我有以下要求: Activity A ---> Activity B ---> 打开图库应用 传统上,我使用 TaskStackBuilder 启动嵌套 Activity .所以我会做这样的事情:
你好。我想将 facebook sdk 添加到我的应用程序中以进行授权/登录。我注册我的应用程序,测试 - 所有工作,直到我添加权限(用于电子邮件),现在我 cath NullPointerExcep
我正在尝试从媒体库中裁剪图像。我可以访问图像,启动默认裁剪工具,甚至可以保存裁剪后的图像结果。 但是,如果裁剪成功,我使用的 Intent 将不会返回任何结果。 我的主要方法: // Crop pho
我想播放从 MediaStore.Audio 中选择的歌曲。我得到了 URi 并在烘烤后进行了测试。但它没有使用媒体播放器播放。 Intent intent = new Intent(Intent.
我打开一个捕获图像的 Intent ,我调用 AsyncTask 的 OnActivityResult 开始对图像进行一些处理。问题是我想先加载 mainActivity,然后启动 AsyncTask
因此,我尝试使用新的 registerForActivityResult() 方法获得许可,并通过 .launch() 按钮单击来请求它,它似乎没有打开任何窗口来请求它。 我总是在 registerF
UPDATE 我有一台运行 8.0.0 T-Mobile 的三星 Galaxy S8+,它运行良好 8.0.0 我的三星 Galaxy S9+ 运行 8.0.0 Verizon,每次都因非法参数而失败
运行 Android Studio/分析/检查代码时...我收到 50 多条相同的错误消息“Android/Lint/Correctness Error在这行代码中将 Fragment 版本升级到至少
我是一名优秀的程序员,十分优秀!