setContentView выдает исключение NullPointerException

У меня есть MainActivity и расширенный DsiplayClass. Из этого DisplayClass я хотел изменить ContentView с помощью setContentView, но все, что я получил, — это исключение NullPointerException.

Пожалуйста, помогите мне и скажите, почему.

Основная активность:

public class Main extends Activity {

    DisplayClass display;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        display = new DisplayClass();

        display.showMain();
    }

}

Класс отображения:

public class DisplayClass extends Main {

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
    }

    public void DisplayClass() {

    }

    public void showMain() {
        setContentView(R.layout.mainmenu);
    }

}

NullPointerException вызывается в строке, где я установил «setContentView (R.layout.mainmenu);» и в этой строке "display.showMain();".

Помогите мне, пожалуйста.


person Community    schedule 10.04.2014    source источник


Ответы (1)


Что именно вы пытаетесь сделать здесь? Вы должны поместить свой setContentView(R.layout.mainmenu); в метод onCreate() вашего класса Main. Полностью удалить DisplayClass.

Причина, по которой вы получаете нулевой указатель, заключается в том, что этот Activity (DisplayClass) на самом деле не был "запущен".

public class DisplayClass {
    public static showMain(Activity main) {
        main.setContentView(R.id.layoutmain);
    }
}

А затем внутри метода onCreate в вашем Main Activity...

DisplayClass.showMain(this);
person tambykojak    schedule 10.04.2014
comment
Хотел почистить свой код. Соберите все вместе, что имеет какое-либо отношение к отображению чего-либо. Извините за недостаточное знание английского, пожалуйста. - person ; 10.04.2014
comment
Я бы не советовал этого, добрый сэр. Но если у вас действительно есть для этого какие-то причины, вам не следует DisplayClass расширять Main. Вместо этого вы должны просто создать обычный класс, а затем иметь статический метод... setMain(Activity main) и в методе, который вы бы назвали main.setContentView(R.layout.mainmenu). - person tambykojak; 10.04.2014
comment
Большое спасибо!!!! В настоящее время я новичок в Java. Спасибо за вашу помощь и ваше терпение. - person ; 10.04.2014