ViewFlipper падает после изменения ориентации - PullRequest
0 голосов
/ 25 октября 2010

Я пытаюсь использовать inflate при использовании 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);

приложение работает нормально. Я пытаюсь сделать что-то не так? В моем приложении у меня есть более сложный LinnarView, который ViewFlipper вложен, и результаты совпадают.

Я проверял это на Android 1.5, 2.2 и вкладке galaxy. Нет проблем при повороте формы из вертикального в горизонтальное положение.

1 Ответ

0 голосов
/ 25 октября 2010

Как правило, если вы храните объектные ссылки пользовательского интерфейса в static данных, вы, вероятно, делаете что-то не так. :) Даже когда кажется, что все работает, у вас, вероятно, будет утечка памяти, пока Android не решит убить ваш процесс. Подробнее об этом см. Статью Ромена Гая .

Итак, в основном вы ответили на свой вопрос ... не делайте этого! Если вы хотите отсрочить инфляцию отсканированных представлений до тех пор, пока они не будут включены (то есть как улучшение производительности), я бы посоветовал вам посмотреть ViewStub.

...