2012-07-19 48 views
2

我试图在按下按钮时将布局添加到我的视图中。布局中的ID为2 EditText s被添加到List<EditText>,所以无论添加多少个XML布局实例,都可以访问它们。但是,我有麻烦让这个工作。Android:通过膨胀XML动态添加布局

主要功能建立视图:

ViewGroup view = null; 
    TextView addressView; 
    Button submit; 
    ImageView addHeader; 

    private int id = 0; 
    private List<EditText> editTexts = new ArrayList<EditText>(); 


    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.get); 

     view = (ViewGroup) findViewById(R.id.getLayout); 


     addressView = (TextView) view.findViewById(R.id.getAddress); 
     submit = (Button) view.findViewById(R.id.getSubmit); 
     addHeader = (ImageView) view.findViewById(R.id.getHeaderAdd); 

     addHeader.setOnClickListener(new OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       addHeaderBox(); 
      }   
     }); 

我的功能附加布局:

private void addHeaderBox() {  
    LayoutInflater inflater = (LayoutInflater) this.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 

    inflater.inflate(R.layout.get_param, view, false); 

    EditText nameBox = (EditText) view.findViewById(R.id.getValue); 
    EditText valueBox = (EditText) view.findViewById(R.id.getName); 

    nameBox.setId(id++); 
    valueBox.setId(id++); 

    editTexts.add(nameBox); 
    editTexts.add(valueBox); 
} 

getValuegetName是两个EditText S在我的布局ID的(不是主要getLayout )。 96

07-19 10:25:13.088: E/AndroidRuntime(32034): java.lang.NullPointerException 
07-19 10:25:13.088: E/AndroidRuntime(32034): at myapp.httprequest.free.GETActivity.addHeaderBox(GETActivity.java:96) 
07-19 10:25:13.088: E/AndroidRuntime(32034): at myapp.httprequest.free.GETActivity.access$0(GETActivity.java:88) 
07-19 10:25:13.088: E/AndroidRuntime(32034): at myapp.httprequest.free.GETActivity$1.onClick(GETActivity.java:65) 

线是nameBox.setId(id++)

回答

5

尝试:

....... 
View someView = inflater.inflate(R.layout.get_param, view, false); 

EditText nameBox = (EditText) someView.findViewById(R.id.getValue); 
EditText valueBox = (EditText) someView.findViewById(R.id.getName); 
........ 
+0

,做吧!非常感谢! – 2012-07-19 14:42:13

1
View view = inflater.inflate(R.layout.get_param, view, false); 

充气膨胀,但膨胀的结果是不分配给任何查看对象。

+0

,当我宣布了,它被正确初始化:'私人列表 editTexts =新的ArrayList ();' – 2012-07-19 14:39:27