【问题标题】:android.view.InflateException: Binary XML file line #9: Binary XML file line #9: Error inflating classandroid.view.InflateException: Binary XML file line #9: Binary XML file line #9: Error inflating class
【发布时间】:2020-06-27 07:57:39
【问题描述】:

我到处寻找,但找不到任何解决此错误的方法。

我正在使用 ExoPlayer 进行实时视频流传输。我的应用程序每次运行时都会崩溃。如果你能帮助我,我会很高兴。

我猜它应该在 XML 文件中的某个地方,但我不明白所有这些错误的含义。 XML:

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout 
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">

<com.devbrackets.android.exomedia.ui.widget.VideoView
    android:id="@+id/video_view"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    app:useDefaultControls="true"/>

</androidx.constraintlayout.widget.ConstraintLayout>

MainActivity 文件:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    final ProgressDialog progressDialog = new ProgressDialog(MainActivity.this);
    progressDialog.setMessage("Please Wait");
    progressDialog.setCancelable(false);
    progressDialog.show();

    MediaController mediaController = new MediaController(this);
    mediaController.setAnchorView(videoView);
    videoView.setMediaController(mediaController);

    videoView.setVideoURI(Uri.parse("Here's path"));
    videoView.start();

    videoView.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
        @Override
        public void onPrepared(MediaPlayer mp) {
            progressDialog.dismiss();
        }
    });
  }
}

堆栈跟踪:

Process: rusiptv.net, PID: 25782
java.lang.RuntimeException: Unable to start activity ComponentInfo{rusiptv.net/rusiptv.net.MainActivity}: android.view.InflateException: Binary XML file line #9: Binary XML file line #9: Error inflating class com.devbrackets.android.exomedia.ui.widget.VideoView
    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2778)
    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2856)
    at android.app.ActivityThread.-wrap11(Unknown Source:0)
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1589)
    at android.os.Handler.dispatchMessage(Handler.java:106)
    at android.os.Looper.loop(Looper.java:164)
    at android.app.ActivityThread.main(ActivityThread.java:6494)
    at java.lang.reflect.Method.invoke(Native Method)
    at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:438)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:807)
 Caused by: android.view.InflateException: Binary XML file line #9: Binary XML file line #9: Error inflating class com.devbrackets.android.exomedia.ui.widget.VideoView
 Caused by: android.view.InflateException: Binary XML file line #9: Error inflating class com.devbrackets.android.exomedia.ui.widget.VideoView
 Caused by: java.lang.reflect.InvocationTargetException
    at java.lang.reflect.Constructor.newInstance0(Native Method)
    at java.lang.reflect.Constructor.newInstance(Constructor.java:334)
    at android.view.LayoutInflater.createView(LayoutInflater.java:647)
    at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:790)
    at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:730)
    at android.view.LayoutInflater.rInflate(LayoutInflater.java:863)
    at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:824)
    at android.view.LayoutInflater.inflate(LayoutInflater.java:515)
    at android.view.LayoutInflater.inflate(LayoutInflater.java:423)
    at android.view.LayoutInflater.inflate(LayoutInflater.java:374)
    at androidx.appcompat.app.AppCompatDelegateImpl.setContentView(AppCompatDelegateImpl.java:469)
    at androidx.appcompat.app.AppCompatActivity.setContentView(AppCompatActivity.java:140)
    at rusiptv.net.MainActivity.onCreate(MainActivity.java:42)
    at android.app.Activity.performCreate(Activity.java:7009)
    at android.app.Activity.performCreate(Activity.java:7000)
    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1214)
    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2731)
    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2856)
    at android.app.ActivityThread.-wrap11(Unknown Source:0)
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1589)
    at android.os.Handler.dispatchMessage(Handler.java:106)
    at android.os.Looper.loop(Looper.java:164)
    at android.app.ActivityThread.main(ActivityThread.java:6494)
    at java.lang.reflect.Method.invoke(Native Method)
    at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:438)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:807)

如果您能更详细地向我解释这个错误,因为如果我再次遇到这个问题,那么我可以很容易地修复它。

编辑: 伙计们谢谢大家!我解决了这个问题。

解决方案:

  • VideoView videoView = findViewById(R.id.video_view);
  • 我根据我的 packageName 更改了 VideoView 的路径。

【问题讨论】:

  • 您应该在使用前找到ViewById (VideoView)。

标签: java android exoplayer


【解决方案1】:

你必须重写构造函数

public VideoPlayerView(Context context, AttributeSet attributeSet) {
super(context, attributeSet);
}

这将解决您的问题。

【讨论】:

    【解决方案2】:

    确保你添加了库依赖并且必须添加这一行

    VideoView vedioView = findViewById(R.id.video_view);
    

    在使用 vedioView 之前。我想它会解决你的问题

    【讨论】:

    • VideoView vedioView = findViewById(R.id.video_view); 这行加吗
    【解决方案3】:

    根据用户的反馈,我检查此文件不完整,请尝试其他视频视图

     <VideoView 
         android:layout_height="fill_parent"
         android:layout_width="fill_parent" 
         android:id="@+id/VideoView" />
    

    【讨论】:

    • 但我正在使用 ExoPlayer,我需要 ExoPlayer 库中的 VideoView
    【解决方案4】:

    请检查是否

    <com.devbrackets.android.exomedia.ui.widget.VideoView
    android:id="@+id/video_view"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    app:useDefaultControls="true"/>
    

    根据您的 packageName,VideoView 的路径是正确的。

    【讨论】:

    • 如何根据您的 packageName 检查 VideoView 的路径是否正确?
    • 你的项目中有 VideoView 作为 java 类吗?
    • 是的,我有 VideoView
    • 现在该类顶部的包名是什么?
    • package="rusiptv.net">
    猜你喜欢
    • 2016-02-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-03
    • 2017-06-05
    • 2017-01-13
    • 1970-01-01
    • 2016-07-11
    相关资源
    最近更新 更多