Форум программистов, компьютерный форум CyberForum.ru

Хранение данных в onRetainNonConfigurationInstance() - Программирование Android

Войти
Регистрация
Восстановить пароль
Другие темы раздела
Программирование Android Парсинг контента с AJAX запросом http://www.cyberforum.ru/android-dev/thread970201.html
Здравствуйте! Для парсинга использую библиотеку jsoup. С сайта нужно спарсить контент, который приходит после AJAX запроса, как реализовать, куда копать вообще, подскажите
Программирование Android Android Приложение и интернет сворганил простенький примерчик на AIR подключил телефон к компую выбрал в меню пункт отладить на устройстве через USB - Но получил сообщение что это не возможно так как нет доступа в интернет. хотя аппарат подключён по вайфаю к сети но сотового интернета нетю надо его подключить или чио ещё? http://www.cyberforum.ru/android-dev/thread970018.html
Как передать параметр в RSS парсер Программирование Android
Здравствуйте уважаемые! В своем Android приложении использую RSS парсер по описанию на сайте anddev.ru. RSS ленты просматриваю на сайте http://www.top68.ru, где они представлены в виде ссылок Политика http://www.top68.ru/rss-news-policy Экономика http://www.top68.ru/rss-news-economy Общество http://www.top68.ru/rss-news-society Проишествия http://www.top68.ru/rss-news-incidents
MAX_COUNT в обратную сторону Программирование Android
как заставить этот код, дойдя до MAX_COUNT, работать в обратную сторону, т.е. count-1 ? public DemoWallpaperEngine(){ picture= BitmapFactory.decodeResource(getResources(), R.drawable.p01); timer = new Timer(); timer.schedule(new TimerTask() { @Override public void run() { if(count == MAX_COUNT ) count = 0;
Программирование Android Маркеры и Google Maps http://www.cyberforum.ru/android-dev/thread969866.html
Подскажите пожалуйста. Необходимо вывести два маркера на карту и zoom карты сделать такой чтобы эти два маркера были видны. Координаты маркеров ранее не известны.
Программирование Android Android SDK Ошибка при запуске При запуске SDK менеджера возникла такая проблема: Подскажите, пожалуйста, в чем может быть проблема? Проверила и доступ к папкам, и Platform-tools устанавливала. При запуске через eclipse тоже выдает ошибку. подробнее

Показать сообщение отдельно
razer89
15 / 15 / 0
Регистрация: 20.06.2010
Сообщений: 142

Хранение данных в onRetainNonConfigurationInstance() - Программирование Android

06.10.2013, 21:24. Просмотров 1888. Ответов 1
Метки (Все метки)

Всем привет! Хочу сделать, чтобы при пересоздании активити (после блокировки\разблокировки девайса) все данные сохранялись. Для этого пользуюсь механизмом onRetainNonConfigurationInstance(), который сохраняет мой контейнер с данными, в последующим эти данные должны будут оттуда вытянуты. Однако столкнулся с проблемой. Вот код основного класса:
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
public class EditActivity extends Activity
{
    BundleContainer bundleContainer;
    DataContainer dataContainer = new DataContainer();
    DrillConfig drillConfig = new DrillConfig();
    Draw2D draw2d;
    private ScalerLine scaler;
    
    @SuppressWarnings("deprecation")
    @Override
    protected void onCreate(Bundle savedInstanceState) 
    {
        if (getLastNonConfigurationInstance() != null)
        {
            bundleContainer = (BundleContainer)getLastNonConfigurationInstance();
            dataContainer = bundleContainer.getDataContainer();
            drillConfig = bundleContainer.getDrillConfig();
        }
        
        requestWindowFeature (Window.FEATURE_NO_TITLE);
        
        LinearLayout.LayoutParams lParams = new LinearLayout.LayoutParams
                   (LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.MATCH_PARENT);
        LinearLayout.LayoutParams btnParams = new LinearLayout.LayoutParams
                   (LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT);
        
        frLayout = new FrameLayout (this);
        frLayout.setLayoutParams(lParams);
 
        if (getLastNonConfigurationInstance() != null)
        {
            draw2d = bundleContainer.getDraw2D();
            frLayout.addView(draw2d, lParams);
        }
        else
        {
            frLayout.addView(draw2d = new Draw2D (this, dataContainer, drillConfig), lParams);
        }
        
        scaler = new ScalerLine (this);
        if (getLastNonConfigurationInstance() != null)
        {
            scaler = bundleContainer.getScaler();
        }
        frLayout.addView(scaler);
        
        setContentView(frLayout);
         
        scaler.drawScaler(getStatusBar(), draw2d.mScaleFactor, draw2d.getScrollX(), draw2d.getScrollY());
        Log.d(TAG, "EditActivity: onCreate()");
 
        super.onCreate(savedInstanceState);
        bundleContainer = new BundleContainer (dataContainer, drillConfig, scaler, draw2d);
        setRequestedOrientation (ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
    }
    
    public BundleContainer onRetainNonConfigurationInstance()
    {
        Log.d(TAG, "retain");
        return bundleContainer;
    }
А это мой контейнер BundleContainer:
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
public class BundleContainer 
{
    private DataContainer dataContainer;
    private DrillConfig drillConfig;
    private ScalerLine scaler;
    private Draw2D draw2d;
    
    public BundleContainer(DataContainer dContainer, DrillConfig dConfig, ScalerLine dScaler, Draw2D d2d)
    {
        dataContainer = dContainer;
        drillConfig = dConfig;
        scaler = dScaler;
        draw2d = d2d;
    }
    
    public DataContainer getDataContainer()
    {
        return dataContainer;
    }
    
    public DrillConfig getDrillConfig()
    {
        return drillConfig;
    }
    
    public ScalerLine getScaler()
    {
        return scaler;
    }
    
    public Draw2D getDraw2D()
    {
        return draw2d;
    }
}
Проблема в следующем. При запуске приложения все объекты создаются с нуля, далее ссылки на них помещаются в bundleContainer. Потом вызывается setRequestedOrientation(), что пересоздает активити и bundleContainer сохраняется. Далее, т.к. getLastNonConfigurationInstance() возвращает не null, объекты уже не создаются, а просто вытягиваются из bundleContainer. Вот здесь и возникает загвоздка - при обращении к объектам draw2d и scaler, выскакивает ошибка NullPointerException, в то время как с dataContainer и drillConfig все работает нормально. Возможно, так происходит потому, что draw2d и scaler создаются в теле класса, а dataContainer и drillConfig создаются еще в полях класса? Прогонял код в отладчике, следил за draw2d и scaler - нифига они не null... Не понимаю, в чем проблема! Жду ваших идей, и заранее спасибо!

Добавлено через 4 часа 20 минут
Короче все, разобрался)) Объяснять, в чем проблема не буду, потому что проблемы, грубо говоря, и не было... =)) Все дело в моих кривых руках! ))
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru