我正在使用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/