0

我在使用 ViewFlipper 访问视图内的数据时尝试使用 inflate。我已经完成了崩溃的示例项目。

主要的.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 对象引用存储在static数据中,您可能做错了什么。:) 即使事情看起来正常,您也可能会泄漏内存,直到 Android 决定终止您的进程。有关详细信息,请参阅Romain Guy 的文章

所以基本上你回答了你自己的问题......不要那样做!如果您想延迟翻转视图的膨胀,直到它们被翻转(即作为性能改进),我建议您查看ViewStub.

于 2010-10-25T15:06:18.893 回答