1

あなたの助けに感謝します。画面にさまざまなビューを表示する ViewAnimator を使用しようとしています。

そう:

  • VievAnimator を作成し、

  • ViewAnimator に 2 つのビュー (この場合は LinearLayouts) を追加し、

  • 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ためです。ViewAnimatorLinearLayout

ご参考までに:

public View inflate (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 に答える