我一直在阅读许多类似的问题,以尝试找到解决方案,但是没有运气。

MainActivity.java

public class MainActivity extends Activity {

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    requestWindowFeature(Window.FEATURE_NO_TITLE);
    getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
    setContentView(R.layout.game);
}


game.xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<View
    android:id="@+id/adView"
    android:background="@drawable/ad"
    android:layout_width="320dp"
    android:layout_height="50dp"
    />

<my.package.MainGamePanel
    android:id="@+id/gameView"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    /> </RelativeLayout>


MainGamePanel.java

public class MainGamePanel extends SurfaceView implements SurfaceHolder.Callback {

private MainThread thread;

public MainGamePanel(Context context, AttributeSet a) {
    super(context, a);
    View.inflate(context, R.layout.game, null);
    onFinishInflate();
    thread = new MainThread(getHolder(), this);
    setFocusable(true);
    thread.setRunning(true);


等等等

然后在MainGamePanel构造函数之外是函数:

@Override
protected void onFinishInflate() {
    getHolder().addCallback(this);
}


还有一个MainThread.java文件,但我不认为这是问题所在。

这是运行时异常:

java.lang.RuntimeException: Unable to start activity ComponentInfo{my.package/my.package.MainActivity}: android.view.InflateException: Binary XML file line #13: Error inflating class my.package.MainGamePanel


如果将setContentView中的MainActivity更改为setContentView(new MainGamePanel(this))并从构造函数中删除AttributeSet参数,然后删除View.Inflate(context, R.layout.game, null);,则它可以工作,但我想弄清楚如何在其中使用自定义视图xml文件。

最佳答案

看来您是在不断扩大布局。您可以在包含MainGamePanel的R.layout.game上设置ContentView,从而使包含MainGamePanel的R.layout.game膨胀。

您应该从onCreate方法中删除View.inflate行。据我所知,它什么也没做。您也不应显式调用onFinishInflate。当MainGamePanel实例的填充实际完成时,将自动调用该方法。

关于java - 尝试在xml布局中使用自定义 View 时出现运行时InflateException,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13278017/

10-10 10:39