我为我的Activity创建了一个动态创建的布局(不要问我为什么,这不是我的项目,但我被要求编辑一下)。我正在尝试添加另一个布局,一种状态栏。我添加了第二个布局的XML布局,这就是代码的样子:
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返回null,每当我尝试使用LinearLayout内的两个按钮执行某些操作时,会导致NullPointerExceptions。我试图清理项目,但没有帮助。感谢您的任何建议。
答案 0 :(得分:2)
您将setContentView()
设为basicLayout
因此您的layout
永远不会被初始化,而buttons
和layouts
都是null
尝试setContentView(R.layout.XML_LAYOUT_CONTAINING_YOUR_BUTTON);
修改强> 使用布局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);
答案 1 :(得分:0)
如果按钮位于logo_layout中,则需要在该特定布局中进行搜索。
Button back = (Button) logo_layout.findViewById(R.id.button_back);