У меня есть ViewSwitcher и хочу добавить к нему взгляды:View.addView() бросает IllegalStateException (ViewSwitcher) `
// initialize views
final ViewSwitcher switcher = new ViewSwitcher(this);
layMenu = (LinearLayout)findViewById(R.id.menu_main_view);
final LevelPicker levelPicker = new LevelPicker(getApplicationContext());
(//)switcher.addView(layMenu);
(//)switcher.addView(findViewById(R.layout.menu_switcher));
Один пользовательский вид, другие один из XML. Я прокомментировал один из них, но оба они, кажется, бросают IllegalStateException: The specified child already has a parent. You must call removeView() on the child's parent first.
Я попытался сделать несколько вещей, например, поместить представления в «контейнер» сначала (другой макет) или попробовать removeView ((View) getParent), как я считаю LogCat пытается сказать ..
Вот мой файл XML (в двух словах):
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/menu_main_view">
<TextView>
</TextView>
<LinearLayout>
<Button></Button> //couple of buttons
</LinearLayout>
</LinearLayout> //this is the parent i guess
Моя первая догадка, что все Чайлдс должно было быть в 1 родителем, который в моем случае это LinearLayout. Кажется, это не работало.
Благодаря
Я в замешательстве. т.е. мой LevelPicker - это настраиваемый класс, расширяющий LinearLayout, где в конструкторе я вызываю this.addView (inflater.inflate (R.layout ...). Как бы я сделал это правильно? Также должно быть содержимое Xml при выполнении что вы описали выше? – user717572
LayoutInflater подходит для файла макета xml. В случае с LevelPicker просто создайте экземпляр с помощью нового оператора java или, если хотите, вы также можете использовать XML-файл для описания пользовательского интерфейса на его основе так же, как вы используете обычный LinearLayout в xml. Единственное различие заключается в том, что вы должны использовать квалифицированное имя LevelPicker в качестве тега xml, то есть –
chyou
любой действительный XML-файл макета, который вы использовали в вызове Activity.this.setContentView(), может быть «завышен» с помощью LayoutInflater. – chyou