0

Мой код состоит из XML gridview, в котором 64 изображения отображаются в виде шахматной доски. Моя Java должна отслеживать клики по этим изображениям с фактическими изображениями внутри них, а затем выполнять поставляемый код.Ошибка Android: Ошибка NullPointerException

Однако во время выполнения моего эмулятор представляет меня с диалоговым окном говоря: «К сожалению, шахматный перестал работать» и LogCat бросает NullPointerException так: java.lang.NullPointerException: Attempt to invoke virtual method 'android.view.View android.app.Activity.findViewById(int)' on a null object reference

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

import android.app.Activity; 
import android.support.v7.app.ActionBarActivity; 
import android.os.Bundle; 
import android.view.Menu; 
import android.view.MenuItem; 
import android.view.View; 
import android.widget.ImageView; 
import android.widget.Toast; 
import android.view.View.OnClickListener; 


public class chessboard extends ActionBarActivity { 


    public Activity board; 

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

     final ImageView block2 = (ImageView) board.findViewById(R.id.block2); 
     block2.setClickable(true); 
     block2.setOnClickListener(new OnClickListener() { 
       public void onClick(View v) { 
        if (block2.getTag() != (null)) { 
         Toast.makeText(getBaseContext(), "Check", Toast.LENGTH_LONG).show(); 

        } 
       } 
      }); 

    } 
+0

'board' равна нулю, потому что это значение по умолчанию для справки если вы ничего не ставите им. – immibis

ответ

0

Когда вы звоните findViewById на вашей board переменной, board является null.

Если вы измените эту строку

final ImageView block2 = (ImageView) board.findViewById(R.id.block2); 

к этому

final ImageView block2 = (ImageView) findViewById(R.id.block2); 

Вы не получите NullPointerException.

Кроме того, этот код не требуется

public Activity board; 

Поскольку вы раздуть макет, вызвав setContentView и может получить ваши ссылки непосредственно из вашего Activity

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