来自Handler的Android setContentView?

时间:2011-08-25 13:11:32

标签: android handler scrollview

我使用下面的代码来填充screen.But它给出了运行时异常。如何解决这个问题?

  

java.lang.IllegalStateException:ScrollView只能托管一个直接子项

我的代码是:

public class MyClass extends Activity {

ArrayList ALobj;
Handler myHandler;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
context = this;
ALobj=new ArrayList();  
ALobj.add(...);

myHandler = new Handler() {
@Override
public void handleMessage(Message msg) {
  super.handleMessage(msg);   
  ALobj.add(....);
  populate_screen(ALobj);
 }
}

    populate_screen(ArrayList ALobj);

}

private void populate_screen(ArrayList obj){

ScrollView scrl=new ScrollView(context);

    LinearLayout llay=new LinearLayout(context); 
........
..........
............

    scrl.addView(llay);
setContentView(scrl);
}

.....
..........
.............
@Override
public boolean onOptionsItemSelected(MenuItem item) {

switch (item.getItemId()) {
case 1:
Message msg = new Message();
myHandler.sendMessage(msg);
break;
}
return super.onOptionsItemSelected(item);
}
}

2 个答案:

答案 0 :(得分:1)

您的例外位于您在scrollview下使用的布局中。您只能在scrollview中使用单一布局而不能使用嵌套布局......

参考此文档:

http://developer.android.com/reference/android/widget/ScrollView.html

答案 1 :(得分:0)

我认为你把多视图放到了scrollview中,这就是你得到它的原因。尝试只放一个视图