//用tableLayout 布局
TableLayout tableLayout = new TableLayout(this);
  setContentView(tableLayout);
for(int i=0;i<data.size();i++){
TableRow row = new TableRow(this);
      row.setId(i);
      tableLayout.addView(row);
//满足条件就创建edittext
EditText text = new EditText(this);
           text.setId(id1);
          text.setTag(1);
text.setOnClickListener(this)
          id1++
          row.addView(text);
//满足条件就创建TextView
TextView view= new EditText(this);
           view.setId(id2);
          view.setTag(2);
view.setOnClickListener(this)   id2++
          row.addView(view);
//满足条件就创建下拉菜单
Spinner spinner=new Spinner(this);
             spinner.setId(id3);
             spinner.setTag(3);
           sid3+;
spinner.setOnitemClickListener(this)
           row.addView(spinner);
public void onClick(View v) {
int tag=(Integer) v.getTag();//这里报空指针异常
switch(tag){
case 1:
//取得EditText 的数据
case 2:
//取得TextView 的数据
case 3:
//取得spinner 的数据
}
整段代码是在循环里面的,现在要取控件的值,int tag=(Integer) v.getTag();//这里报空指针异常;
我的目的就是取到控件的数据,别的方法也可以,求高手指点。。
 
 
 

解决方案 »

  1.   

    貌似不能这样写哦。你用getTag()取得Tag;但是你这是三个不同对象的Tag啊,如果要得到它,你也要引用其中的一个对象啊。或者把这三个封装在一个对象里面,那样你就可以了;
      

  2.   

    我觉得这三个对象都在tableLayout 里面,我用tableLayout.setTag(),然后再tableLayout.getTag()取,取数据写了个方法,把tableLayout 当参数传过去了,public void getData(TableLayout tableLayout )但是还是报空指针异常,或者我的想法是错的?
    有别的取数据的方法么?