1

并感谢您的帮助。我正在尝试使用 ViewAnimator 在屏幕上显示不同的视图。

所以:

  • 我创建了 VievAnimator,

  • 我向 ViewAnimator 添加了 2 个视图(在本例中为线性布局),

  • 我设置了 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();

非常感谢任何帮助!

4

1 回答 1

2

问题出在以下几行:

LinearLayout front =(LinearLayout) inflater.inflate(R.layout.front,viewAnimator);
LinearLayout back =(LinearLayout) inflater.inflate(R.layout.back,viewAnimator);

因为当您viewAnimator在膨胀期间提供作为根视图时,会返回相同的根视图,并且在您的代码中导致ClassCastException因为ViewAnimator无法转换为LinearLayout.

供你参考:

公共视图膨胀(int资源,ViewGroup根)

参数

要加载的 XML 布局资源的资源 ID(例如,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);
于 2013-05-12T12:17:09.943 回答