Android: почему на экране ничего не появляется?
И спасибо за вашу помощь. Я пытаюсь использовать ViewAnimator, чтобы показать разные виды на экране.
Так:
Я создаю VievAnimator,
Я добавляю 2 вида (в данном случае LinearLayouts) в ViewAnimator,
Я устанавливаю setContentView(viewAnimator);
Я вызываю viewAnimator.showNext();
Но ничего не показывает на экране...
public class MainActivity extends Activity {
public DataBaseHelper db;
public EditText enter;
public TextView tv;
public ArrayList<String> listWord;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
ViewAnimator viewAnimator = new ViewAnimator(this);
LayoutInflater inflater = (LayoutInflater)this.getSystemService
(Context.LAYOUT_INFLATER_SERVICE);
LinearLayout front =(LinearLayout) inflater.inflate(R.layout.front,viewAnimator );
LinearLayout back =(LinearLayout) inflater.inflate(R.layout.back,viewAnimator );
viewAnimator.addView(front);
viewAnimator.addView(back);
setContentView(viewAnimator);
viewAnimator.showNext();
Любая помощь очень ценится!
1 ответ
Проблема в следующих строках:
LinearLayout front =(LinearLayout) inflater.inflate(R.layout.front,viewAnimator);
LinearLayout back =(LinearLayout) inflater.inflate(R.layout.back,viewAnimator);
потому что, когда вы предоставляете viewAnimator
как корневое представление во время инфляции, то то же самое корневое представление возвращается, и в вашем коде, вызывающем ClassCastException
так как ViewAnimator
не может быть брошен в LinearLayout
,
Для справки:
public View inflate (внутренний ресурс, корень ViewGroup)
параметры
идентификатор ресурса для загружаемого ресурса макета XML (например, R.layout.main_page)
root Необязательный вид, который будет родительским для сгенерированной иерархии.
Возвращает
Корень Вид завышенной иерархии. Если был указан root, то это корневой вид; в противном случае это корень завышенного XML-файла.
Просто предоставьте null в качестве корневого представления, и все будет работать нормально. Например:
LinearLayout front = (LinearLayout) inflater.inflate(R.layout.front, null);
LinearLayout back = (LinearLayout) inflater.inflate(R.layout.back, null);