Раздражает NullPointerException - PullRequest
1 голос
/ 30 июля 2011

Вот мой основной класс:

import android.graphics.Rect;
import android.util.Log;
import android.view.MotionEvent;
import android.view.View;
import android.widget.RelativeLayout;

public final class HomeScreen implements OnTouchListener
{
    public HomeScreen(Viewer view) 
    {
        this.view = view;
        RelativeLayout layout = (RelativeLayout)view.findViewById(R.id.home_screen_lay);
        layout.setOnTouchListener(this); // this is where the error points to
        network.setFocus(this);
        view.setContentView(R.layout.home);
    }

    public boolean onTouch(View v, MotionEvent e) 
    {
        switch(e.getAction())
        {
            case MotionEvent.ACTION_DOWN:
                onPress(v,e);
                break;
            case MotionEvent.ACTION_MOVE:
                onMove(v,e);
                break;
            case MotionEvent.ACTION_UP:
                onRelease(v,e);
                break;
        }
        return true;
    }

    public void onPress(View v, MotionEvent e)
    {
        for(int x=0;x<buttons.length;x++)
        {
            if(buttons[x].contains((int)e.getX(),(int)e.getY()))
            {
                if(buttons[x]==exitRect)
                    view.finish();
                if(buttons[x]==newUserRect)
                    new NewUser(view,network);
                if(buttons[x]==loginRect)
                    new Login(view,network);
            }
        }
    }
    public void onMove(View v, MotionEvent e){}
    public void onRelease(View v, MotionEvent e){}

    public void handleMessage(String message){}
    private NetworkManager network;
    private Viewer view;
    private Rect loginRect;
    private Rect newUserRect;
    private Rect exitRect;
    private Rect[] buttons;
}

и вот home.xml:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/home_screen_lay"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@drawable/home_screen">
</RelativeLayout>

NullPointerExeption указывает на эту строку в моем классе HomeScreen, он говорит, что макет нулевой. Я смотрю на это в течение нескольких часов, и я не вижу, что не так. Может кто-то еще увидеть, что мне не хватает? Все соответствующие ответы приветствуются!

Ответы [ 3 ]

5 голосов
/ 30 июля 2011

Что если вы переедете:

view.setContentView(R.layout.home);

к началу метода, прежде чем пытаться получить объект макета?

1 голос
/ 14 декабря 2017

Вы должны поместить метод setContentView в начало метода с именем HomeScreen.

view.setContentView(R.layout.home);
1 голос
/ 30 июля 2011

Я пытаюсь установить все свои атрибуты (т. Е. layout) перед добавлением каких-либо слушателей. В этом смысле ход:

layout.setOnTouchListener(this);

в конец метода (извините, @mharper за возможный дубликат ответа). this создает исключение, поэтому измените this на HomeScreen в приведенном выше заявлении.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...