0

ビュー内のデータにアクセスするために ViewFlipper を使用しているときにインフレートを使用しようとしています。クラッシュするサンプルプロジェクトを実行しました。

main.xml

<?xml version="1.0" encoding="utf-8"?>  
<ViewFlipper xmlns:android="http://schemas.android.com/apk/res/android"  
    android:id="@+id/RelativeLayout"  
    android:layout_width="wrap_content"  
    android:layout_height="wrap_content" />

FlipViewBug.java

package android.FlipViewBug;

import android.app.Activity;
import android.content.Context;
import android.os.Bundle;
import android.view.LayoutInflater;
public class FlipViewBug extends Activity {

    private static LayoutInflater inflater = null;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        inflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    }
}

エミュレーターを水平方向から垂直方向に回転すると、アプリが予期せず停止しCTRL+F11てクラッシュします。

行を削除すると

inflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);

アプリは正常に動作します。私は何か間違ったことをしようとしていますか? 私のアプリでは、ネストされたより複雑なものがあり、結果は同じです LinnarViewViewFlipper

Android 1.5、2.2、およびgalaxyタブでこれをチェックしていました。垂直ビューから水平ビューに回転しても問題ありません。

4

1 に答える 1

0

経験則として、UI objectref をstaticデータに格納している場合は、おそらく何か間違ったことをしている可能性があります。:) 動作しているように見えても、Android がプロセスを強制終了するまで、メモリ リークが発生している可能性があります。詳細については、これに関する Romain Guy の記事を参照してください。

つまり、基本的にあなたは自分の質問に答えました...そうしないでください!フリップアウトされたビューがフリップインされるまで (つまり、パフォーマンスの向上として) インフレーションを遅らせたい場合は、 を調べることをお勧めしますViewStub

于 2010-10-25T15:06:18.893 に答える