setContentView говорит, что источник не найден - PullRequest
2 голосов
/ 22 декабря 2011

Я пытаюсь создать собственный GLSurfaceView с текстом поверх него, чтобы отобразить счет в игре. Я сделал единый XML-макет, основанный на чьих-то постах здесь, но когда я пытаюсь загрузить его с помощью setContentView, приложение вылетает. после отладки я обнаружил, что там написано "Источник не найден". Я восстановил файл R, но это не помогает. Для справки мой класс, который расширяет GLSurfaceView, называется GLView. Любая помощь будет оценена.

 package org.kizik.WLTBO;


    import android.app.Activity;
    import android.os.Bundle;




    import android.view.View;
    import android.view.ViewGroup;
    import android.widget.FrameLayout;
    import android.widget.LinearLayout;
    import android.widget.RelativeLayout;
    import android.widget.TextView;


    public class WholettheballoutActivity extends Activity {
       GLView view;



       @Override
       public void onCreate(Bundle savedInstanceState) {
          super.onCreate(savedInstanceState);
          setContentView(R.layout.score);
          view = (GLView) findViewById(R.id.mySurfaceView);

       // You can use a FrameLayout to hold the surface view
          /*FrameLayout frameLayout = new FrameLayout(this);
          frameLayout.addView(view);

          // Then create a layout to hold everything, for example a RelativeLayout
          RelativeLayout relativeLayout= new RelativeLayout(this);
          relativeLayout.addView(frameLayout);
          relativeLayout.addView(score);
          setContentView(relativeLayout);*/
       }

       @Override
       protected void onPause() {
           super.onPause();
           view.onPause();
       }

       @Override
       protected void onResume() {
           super.onResume();
           view.onResume();
       }
    }

С именем файла XML Score.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent" >

    <TextView android:id="@+id/textView1"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"/>

    <TextView android:id="@+id/textView2"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"/>

    <org.kizik.WLTBO.GLView
        android:id="@+id/mySurfaceView"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_weight="1"/>        

</LinearLayout>

Ответы [ 2 ]

3 голосов
/ 22 декабря 2011

Это может произойти, если вы создали конструктор с одним параметром GLView (Context c), вам нужно создать другой конструктор, такой как GLView (Context c, AttributeSet attrs), поэтому, если вы не создали этот конструктор, он не сможет не найти GLView из класса, потому что его конструктор не создан .. !! я думаю, что вы не создали этот конструктор .. !!

 public GLview(Context context, AttributeSet attrs){

   super(context,attrs); }
0 голосов
/ 22 декабря 2011

Проблема в декларации XML вашего пользовательского представления, она должна выглядеть примерно так:

 <org.kizik.WLTBO.GLView [other attributes]/>
...