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

Программирование Android

Войти
Регистрация
Восстановить пароль
 
dubok79
323 / 121 / 11
Регистрация: 01.11.2012
Сообщений: 586
#1

Нужен совет в поиске неизвестной ошибки - Android

11.03.2015, 11:31. Просмотров 277. Ответов 4
Метки нет (Все метки)

Выпустил обновление своего приложения и начались у некоторых пользователей ошибки. А именно при использовании виджета, он либо просто черный без данных, либо приложение вываливается с ошибкой. В консоль разработчика отчеты с ошибками не приходят. У меня на 6-ти гаджетах с разными андроидами никаких ошибок нет. Как тут ловить ошибки? Пробежался по коду. Нашел пару косяков. Поправил. Выложил - ошибки те же.
Что менял? Перенес сохранение/чтение основных настроек в отдельный класс. Может я его не правильно как то использую. Может дело в том, что я его не корректно назвал?

Сам класс:
Кликните здесь для просмотра всего текста

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
public class Preferences {
    private final String FILENAME = "general_preferences";
    private final String FONT = "font";
 
        private String tvFont;
 
    private Context context;
    
    public Preferences(Context context){
        this.context = context;
    }
 
    public void loadPreferences() {
        SharedPreferences settings = null;
        try{settings = context.getSharedPreferences(FILENAME, Context.MODE_PRIVATE);
        }catch(Exception e){
            setDataDefault();
            return;
        }
        if (settings.getAll().size() == 0) {
            SharedPreferences.Editor editor = settings.edit();
            editor.clear();
            editor.commit();
            setDataDefault();
        } else {
            try{
                tvFont = settings.getString(FONT, "");
            }catch(ClassCastException e){setDataDefault();}
        }
    }
    public void savePreferences() {
        SharedPreferences settings = context.getSharedPreferences(FILENAME, Context.MODE_PRIVATE);
        SharedPreferences.Editor editor = settings.edit();
        editor.putString(FONT, tvFont);
        editor.commit();
    }
    private void setDataDefault(){
        tvFont = "";
    }
    public boolean set_tvFont(String val){
        tvFontSelect = val;
        return true;
    }
    public String get_tvFontSelect(){
        return tvFontSelect;
    }
}


Как использую в коде:
Так:
Кликните здесь для просмотра всего текста

Java
1
2
3
4
        Preferences pref = new Preferences(this);
        pref.loadPreferences();
        String tvFont = pref.get_tvFont();
        pref = null;

Ну или так:
Кликните здесь для просмотра всего текста

Java
1
2
3
4
        Preferences pref = new Preferences(this);
        pref.set_tvFont("Arial");
                pref.savePreferences();
        pref = null;


Как вообще в таких случаях искать ошибки? Может у кого есть подобный опыт. Спасибо заранее.

Добавлено через 2 часа 12 минут
Похоже в одном месте нашел следующий вылет, только на Андроид 4.0.х и в том случае, если виджет приложения добавляется на рабочий стол сразу, не открывая само приложение сразу после установки.

На виджете у меня есть кнопка его принудительного обновления. Клик по ней задается так:
Java
1
2
3
4
5
            Intent iBtn = new Intent(context, Widget.class);
            iBtn.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
            iBtn.setAction(BTN_WIDGET_UPD);
            PendingIntent piBtn = PendingIntent.getBroadcast(context, 0, iBtn, 0);
            updateViews.setOnClickPendingIntent(R.id.ivBtn, piBtn);
Но у меня есть настройка по которой эта кнопка на виджете либо используется либо нет. Поэтому в случае, когда она не используется мне нужно очистить с нее setOnClickPendingIntent. Как мне это сделать?
Я сделал так
Java
1
updateViews.setOnClickPendingIntent(R.id.ivBtn, null);
, но на андроиде 4.0.х вылетает ошибка NullPointerException. На более вкусных дроидах такого нет.

Как быть?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.03.2015, 11:31     Нужен совет в поиске неизвестной ошибки
Посмотрите здесь:

Рисование пазлов, нужен совет Android
Android AsincTask нужен совет!
Нужен совет Android
Android Нужен совет с программой с использованием карт
Android Сохранение position элемента ListView при поиске
Android Почему моё приложение не выходит в поиске в Goolge Play
Получение данных с сайта. Нужен совет Android
Нужен ваш совет. Игра или программа под Андроид Android
NullPointerException при поиске ListView Android
Нужен совет с облачными технологиями Android
Нужен вас совет Android
Android Нужен совет по правильной логике для авторизации пользователя при запуске приложения

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Паблито
2017 / 1759 / 548
Регистрация: 12.05.2014
Сообщений: 6,240
Завершенные тесты: 1
11.03.2015, 11:35     Нужен совет в поиске неизвестной ошибки #2
Я не специалист вообще и в код не вникал и поэтому просто спрошу - была очень веская причина назвать свой класс Preferences ?
dubok79
323 / 121 / 11
Регистрация: 01.11.2012
Сообщений: 586
11.03.2015, 11:36  [ТС]     Нужен совет в поиске неизвестной ошибки #3
Цитата Сообщение от Паблито Посмотреть сообщение
была очень веская причина назвать свой класс Preferences ?
Нет, без задней мысли так назвал, но уже переименовал...
Spelcrawler
523 / 493 / 111
Регистрация: 12.03.2014
Сообщений: 1,646
Завершенные тесты: 1
11.03.2015, 14:44     Нужен совет в поиске неизвестной ошибки #4
А какая разница? Имя пакета-то другое. Этот класс никак не конфликтует со стандартным.
dubok79
323 / 121 / 11
Регистрация: 01.11.2012
Сообщений: 586
11.03.2015, 15:30  [ТС]     Нужен совет в поиске неизвестной ошибки #5
Цитата Сообщение от Spelcrawler Посмотреть сообщение
А какая разница? Имя пакета-то другое. Этот класс никак не конфликтует со стандартным.
Это точно, но на всякий случай, все же переименовал, так сказать для чистоты эксперимента.
Yandex
Объявления
11.03.2015, 15:30     Нужен совет в поиске неизвестной ошибки
Ответ Создать тему
Опции темы

Текущее время: 07:23. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru