2014-03-17 4 views
0
Button start_game; 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState);   
    start_game = (Button) findViewById(R.id.start_game); 
    start_game.setOnClickListener(this); 
    setContentView(R.layout.welcome); 
} 

Я не знаю почему, но если я удалю строку setOnClickListener, начнется мое приложение (конечно, моя кнопка ничего не делает). Logcat дает мне это:setOnClickListener вызывает сбой

java.lang.RuntimeException: Unable to start activity ComponentInfo{de.test.testabc/de.test.testabc.Welcome}: java.lang.NullPointerException

+5

вы настраиваете setcontentview() после findviewbyId() – NullPointerException

ответ

8

Вы должны раздуть макет перед тем получать элементы пользовательского интерфейса, в противном случае возвращает findViewByIdnull и, следовательно, вы получили NullPointerException на линии start_game.setOnClickListener(this);.

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

    setContentView(R.layout.welcome); //layout inflated now it's ok to get your button 

    start_game = (Button) findViewById(R.id.start_game); 
    start_game.setOnClickListener(this); 
} 
+0

Я попробовал это, и это по-прежнему падает: 03-17 12: 48: 02.567: E/AndroidRuntime (25368): НЕУСТРАНИМОГО ИСКЛЮЧЕНИЕ: главный 03-17 12 : 48: 02.567: E/AndroidRuntime (25368): java.lang.RuntimeException: не удается запустить активность ComponentInfo {de.test.testabc/de.test.testabc.Welcome}: android.util.AndroidRuntimeException: requestFeature() должен быть перед добавлением содержимого – user3367856

+0

@ user3367856 Вы обязательно вызываете 'setContentView' перед' requestFeature() '. Не делай этого. –

+0

У меня есть requestWindowFeature, чтобы сделать его полноэкранным, но это после setconentView. О, ладно, это проблема. Thanks – user3367856

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