Android setContentView из обработчика? - PullRequest
0 голосов
/ 25 августа 2011

Я использовал приведенный ниже код для заполнения экрана. Но это дает исключение времени выполнения. Как решить эту проблему?

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 ]

1 голос
/ 25 августа 2011

Ваше исключение находится в макете, который вы используете под scrollview.Вы можете использовать только один макет в scrollview, а не во вложенном макете ......

см. Этот документ:

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

0 голосов
/ 25 августа 2011

Я думаю, что вы поместили множественное представление в представление прокрутки, поэтому вы получаете это.попробуй поставить только один вид

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...