通过findviewbyid获取另一个xml linearlayout

时间:2016-04-27 07:36:03

标签: android android-linearlayout

我有一个Main xml及其Activity页面。现在我需要另一个menu.xml的Linerlayout

我的findviewbyid抛出一个nullpointer。是否有任何解决方案。

注意:我不能将两个xml放在一个地方。使用包含也不起作用

2 个答案:

答案 0 :(得分:0)

尝试使用

 layoutObject.findViewById();

答案 1 :(得分:0)

说明

当你膨胀布局时,布局还没有在UI中,这意味着用户在添加之前将无法看到它。要执行此操作,您必须暂停ViewGroupLinearLayoutRelativeLayout等)并向其中添加膨胀的View。一旦添加它们,您就可以像处理任何其他视图一样处理它们,包括findViewById方法,添加侦听器,更改属性等等。

代码

//Inside onCreate for example
setContentView(R.layout.main); //Sets the content of your activity
View otherLayout = LayoutInflater.from(this).inflate(R.layout.other,null);

//You can access them here, before adding `otherLayout` to your activity
TextView example = (TextView) otherLayout.findViewById(R.id.exampleTextView);

//This container needs to be inside main.xml
LinearLayout container = (LinearLayout)findViewById(R.id.container);

//Add the inflated view to the container    
container.addView(otherLayout);

//Or access them once they're added
TextView example2 = (TextView) findViewById(R.id.exampleTextView);

//For example, adding a listener to the new layout
otherLayout.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View view) {
        //Your thing
    }
});

假设

  • main.xml包含LinearLayout,其ID为container
  • other.xml是项目中的布局文件
  • other.xml包含TextView,其ID为exampleTextView