2013-07-09 3 views
0

У меня динамически созданный макет для моей деятельности (не спрашивайте меня, почему это не мой проект, но меня попросили немного его отредактировать). И я пытаюсь добавить в него еще один макет, вроде строки состояния. У меня есть макет XML для второго макета им добавления и это то, что код выглядит следующим образом:Android: findViewById возвращает null

AbsoluteLayout basicLayout = new AbsoluteLayout(this); 
basicLayout.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT)); 

setContentView(basicLayout); 

LinearLayout logo_layout = (LinearLayout) findViewById(R.id.layout_logo); 
Button back = (Button) findViewById(R.id.button_back); 
Button options = (Button) findViewById(R.id.button_menu); 

Но findViewById возвращает нуль, что приводит к NullPointerExceptions всякий раз, когда им пытаются сделать что-то с двумя кнопками, которые находятся внутри LinearLayout , Я пытался очистить проект, но это не помогло. Спасибо за любой совет по этому поводу.

ответ

2

Вы устанавливаете setContentView() в basicLayout

так что ваш layout никогда не инициализирован и ваш buttons и layouts являются null

попробовать setContentView(R.layout.XML_LAYOUT_CONTAINING_YOUR_BUTTON);

EDIT использование макета Inflater

setContentView(basicLayout); 

    //create a view to inflate the layout from the xml 
    View view = getLayoutInflater().inflate(R.layout.XML_LAYOUT, basicLayout,false); 

    //add the view to the basic layout 
    basicLayout.addView(view); 

    LinearLayout logo_layout = (LinearLayout) view.findViewById(R.id.layout_logo); 
    Button back = (Button) view.findViewById(R.id.button_back); 
    Button options = (Button) view.findViewById(R.id.button_menu); 
+0

Но привычка, что неприятные последствия, когда Im добавляя взгляды на BasicLayout позже? Как basicLayout.addView (некоторое представление)? –

+0

@ Tomáš'GunsBlazing'Frček PLS проверить отредактированный ответ –

+0

Это сделало это, спасибо большое! :) –

0

Если кнопки расположены в файле logo_layout, вам необходимо выполнить поиск в пределах этого конкретного макета.

Button back = (Button) logo_layout.findViewById(R.id.button_back); 
+0

Я попытался это, но чем я получаю NullPointerException, потому что logo_layout также нулевой –

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