我一直在閱讀很多類似的問題,試圖找到解決方案,但沒有運氣。運行時InflateException當試圖在xml佈局中使用自定義視圖
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
如果我在MainActivity
改變setContentView
到setContentView(new MainGamePanel(this))
並從構造中刪除AttributeSet
參數,並刪除View.Inflate(context, R.layout.game, null);
,那麼它的工作原理,但我想弄清楚如何在xml文件中使用自定義視圖。
它看起來像是循環膨脹佈局。您在R.layout.game上設置了內容視圖,其中包含一個MainGamePanel,其中包含一個MainGamePanel等可能不是問題的R.layout.game,它膨脹了,但這是一個問題 – toadzky
謝謝!我移動了View.inflate(context,R.layout.game,null);插入MainActivity中,緊跟在setContentView之後,因此它只會被調用一次,並且現在可以工作。非常感謝你。 – user1807307
我會將其移動到一個答案,所以你可以接受它 – toadzky