2015-04-15 6 views
-3

Я ненавижу ошибки, подобные этому. Я получаю нулевой указатель. Я знаю, что это значит. Я просто не понимаю, как я получаю его, так как знаю, что предмет, на который он указывает, действительно существует. Я создаю текстовое представление, которое будет обновляться рендерером opengl. В тексте есть оценка. Я создал текстовое представление в XML и дал ему «id», затем ссылаюсь на него в своей программе и обновляю его через рендеринг. Icreate переменные TextView глобально, тогда я инициализирую их в методе onCreate(). Затем я создал метод для установки текста. Это называется внутри моего класса рендеринга.textview, дающий нулевой указатель

Вот мой Java-код

View r1; 
TextView score3, score4; 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     //set app to full screen and keep screen on 
     this.requestWindowFeature(Window.FEATURE_NO_TITLE); 
     getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN); 

     setContentView(Main.layout);//R.layout.gl_triallayout; 

     r1 = findViewById(Main.id);////R.id.gl_triallayout; 
     score3 = (TextView) findViewById(R.id.threeScore); 
     score4 = (TextView) findViewById(R.id.fourScore); 
     ...... 
     } 

public int get3(int i){ 
     score3.setText("Score" + String.valueOf(i)); 
     ((RelativeLayout) r1).bringChildToFront(findViewById(R.id.threeScore)); 
     Log.i("i", String.valueOf(i)); 
     return i; 
    } 

код XML

<TextView 
    android:id="@+id/threeScore" 
    android:layout_alignParentBottom="true" 
    android:layout_alignParentRight="true" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:text="Score" 
    android:layout_marginLeft="10dip" 
    android:layout_marginRight="10dip" 
    android:textSize="30dp" 
    android:textColor="#ffff00"/> 

Update

Основной класс

public void Trial(View v) { 
     layout = R.layout.gl_triallayout; 
     id = R.id.glTrialLayout; 
     gameType = 0; 
     Intent intent = new Intent(Main.this, OpenGLActivity.class); 
     startActivity(intent); 
    } 

    public void PlayGame(View v) { 
     layout = R.layout.gl_layout; 
     id = R.id.glLayout; 
     gameType = 1; 
     Intent intent = new Intent(Main.this, OpenGLActivity.class); 
     startActivity(intent); 
    } 

Я ненавижу идею беспорядка StackOverflow с тем же вопросом так если ответ очень прост, вы можете дать его мне в комментариях. то я мог бы удалить это.

+1

Можете ли вы разместить сообщение об ошибке logcat plz? – Maxouille

+3

Вы не указали свой контент. используйте 'setContentView (R.layout.activity_main);' – Shvet

+1

задайте свой файл макета в onCreate() setContentView (R.layout.activity_main); –

ответ

2

Ваш

setContentView(Main.layout) 

должен быть

setContentView(R.layout.filename) 

В приведенном выше коде, вы должны изменить имя файла макета на основе ваших потребностей, как R.layout.activity_main.

То же самое относится и к,

r1 = findViewById(Main.id);////R.id.gl_triallayout; 

Что такое r1?

Если это кнопка, она должна быть

r1 = (Button) findViewById(R.id.gl_triallayout);////R.id.gl_triallayout; 

Если это Editext,

r1 = (EditText) findViewById(R.id.gl_triallayout);////R.id.gl_triallayout 

Если это TextView,

r1 = (TextView) findViewById(R.id.gl_triallayout);////R.id.gl_triallayout 

Кроме того, в вашем XML макет, где вид на score4 и r1?

Я думаю, вам следует начать сначала изучение основ Android.

+0

Вы видели мое обновление? – will

+0

Нет правильного кода для решения проблемы. У вас есть метод, но нет объявления, в котором вы обращаетесь к методу и так далее. –

Смежные вопросы