java - Android:如何设置 YoutubePlayerSupportFragment 的宽度/高度

标签 java android android-fragments layout youtube

我正在使用YoutubePlayerSupportFragment在我的应用程序中。我从代码(不是 xml)创建 fragment 并使用 FragmentManager 将其注入(inject) Activity 中:

String video_id = "LHcP4MWABGY";

YoutubeFragment youtubeFragment = YoutubeFragment.newInstance(video_id);

mFragmentManager.beginTransaction().replace(R.id.activity_main, youtubeFragment).commit()

如何定义 youtube fragment 的宽度/高度?我尝试过:

ViewGroup.LayoutParams params = (ViewGroup.LayoutParams)youtubeFragment.getView().getLayoutParams();

params.height = 400;

youtubeFragment.getView().setLayoutParams(params);

但这给了我一个 NullPointerException。异常(exception)在这一行:

ViewGroup.LayoutParams params = (ViewGroup.LayoutParams)youtubeFragment.getView().getLayoutParams();

这是错误日志:

java.lang.NullPointerException: Attempt to invoke virtual method 'android.view.ViewGroup$LayoutParams android.view.View.getLayoutParams()' on a null object reference
                at com.test.revy.radioshake.MainActivity$1.onItemClick(MainActivity.java:249)
                at android.widget.AdapterView.performItemClick(AdapterView.java:346)
                at android.widget.AbsListView.performItemClick(AbsListView.java:1550)
                at android.widget.AbsListView$PerformClick.run(AbsListView.java:3830)
                at android.widget.AbsListView$3.run(AbsListView.java:5855)
                at android.os.Handler.handleCallback(Handler.java:739)
                at android.os.Handler.dispatchMessage(Handler.java:95)
                at android.os.Looper.loop(Looper.java:148)
                at android.app.ActivityThread.main(ActivityThread.java:7325)
                at java.lang.reflect.Method.invoke(Native Method)
                at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1230)
                at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1120)

最佳答案

正如 Abbas 所建议的,问题是 FragmentManager 的 Transaction().[..].commit() (异步调用)。 使用 commitNow() 而不是 commit() 解决:

mFragmentManager.beginTransaction().replace(R.id.activity_main, youtubeFragment).commitNow()

关于java - Android:如何设置 YoutubePlayerSupportFragment 的宽度/高度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40039807/

相关文章:

java - 我不知道如何离开这个循环结构

Java、Oracle db - trunc(nvl) 从日期时间对象中删除时间戳后出现时区问题

java - Android Intents - 目标类的默认值

Android:如何更改放置在动态创建的布局中的 ImageButton 的重力

android - 如何在抛出的异常中模拟 Crashlytics 静态方法

android - 如何将垂直准则转换为百分比

android - 打算在 fragment 类中

java - 为什么我不能将 random.nextInt 分配给变量?

java - 使用 Java 中的 cuda 设备内核?

java - 在选项卡 View 之间滑动几次后膨胀异常