java - exoplayer 中的 Recyclerview 不起作用
问题描述
我的应用程序在 framelayout 中使用 exo 播放器,并带有一个显示服务器列表的 recyclerview,所以问题是当我单击播放器上的任何位置时,通常会隐藏控件,如播放暂停进度条 fullscrn 等 recyclerview,但应用程序崩溃但如果我在单击播放器上的任何位置之前单击 recyclerview 一切正常,就像 recyclerview 隐藏一样,就像 exoplayer 中的其他控件一样。
simpleExoPlayerView.setControllerVisibilityListener(new PlayerControlView.VisibilityListener() {
@Override
public void onVisibilityChange(int visibility) {
Log.e("Visibil", String.valueOf(visibility));
if (visibility==0){
rvServer.setVisibility(VISIBLE);
imgBack.setVisibility(VISIBLE);
imgFull.setVisibility(VISIBLE);
if (listSub.size()!=0) {
imgSubtitle.setVisibility(VISIBLE);
}
}else {
rvServer.setVisibility(GONE);
imgBack.setVisibility(GONE);
imgFull.setVisibility(GONE);
imgSubtitle.setVisibility(GONE);
}
}
});
<FrameLayout
android:id="@+id/player_layout"
android:layout_width="match_parent"
android:layout_height="match_parent">
<com.google.android.exoplayer2.ui.PlayerView
android:id="@+id/video_view"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:controller_layout_id="@layout/custom_controls"
/>
<LinearLayout
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/rv_server_list"
android:layout_width="match_parent"
android:nestedScrollingEnabled="false"
android:layout_height="wrap_content">
</androidx.recyclerview.widget.RecyclerView>
</LinearLayout>
<com.google.android.exoplayer2.ui.SubtitleView
android:id="@+id/subtitle"
android:background="@color/transparent"
android:layout_width="match_parent"
android:layout_height="match_parent" />
<ImageView
android:id="@+id/img_subtitle"
app:srcCompat="@drawable/ic_subtitle"
android:layout_gravity="bottom|end"
android:layout_marginBottom="42dp"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginEnd="50dp" />
</FrameLayout>
'''错误日志
2019-09-09 09:37:26.318 21523-21523/com.demo.app E/vTYpe ::: 1
2019-09-09 09:37:30.392 21523-21523/com.demo.app E/STATE PLAYER:::: false
2019-09-09 09:37:44.515 21523-21523/com.demo.app E/Visibil: 8
2019-09-09 09:37:44.518 21523-21523/com.demo.app E/InputEventReceiver: Exception dispatching input event.
2019-09-09 09:37:44.518 21523-21523/com.demo.app E/MessageQueue-JNI: Exception in MessageQueue callback: handleReceiveCallback
2019-09-09 09:37:44.521 21523-21523/com.demo.app E/MessageQueue-JNI: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.view.View.setVisibility(int)' on a null object reference
at com.com.demo.app.DetailsActivity$11.onVisibilityChange(DetailsActivity.java:746)
at com.google.android.exoplayer2.ui.PlayerControlView.hide(PlayerControlView.java:576)
at com.google.android.exoplayer2.ui.PlayerView.onTouchEvent(PlayerView.java:798)
at android.view.View.dispatchTouchEvent(View.java:10024)
解决方案
推荐阅读
- c - 为什么客户端需要服务器的大小才能在c中连接到它
- sql - Rails:使用内连接查询,按关联排序,没有重复记录
- python - 使用 shell 管道时 subprocess.run 的返回码
- javascript - 为什么嵌套 if 语句的 console.log 方法不起作用?
- python - 使用 setuptools 在 Python 包中包含额外文件
- npm - 在 .npmrc 中配置 github 包时,`npm search` 是否不起作用
- python-3.x - Pyqt5 Python3 QPushButton 默认 StrongFocus 颜色或选项卡选择颜色
- python - 限制线或多项式图的范围
- swift - Swift 泛型 T.Type 变为 T.Protocol
- reactjs - 使用 typescript 的 CombineReducers 功能