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

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

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

Нужен совет в поиске неизвестной ошибки - Программирование Android

11.03.2015, 11:31. Просмотров 295. Ответов 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. На более вкусных дроидах такого нет.

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

Нужен совет - Программирование Android
Добрый день, решил с головой погрузится в Android программирование, сейчас начал с книги Брюс Эккель - Философия Java, подскажите, какой...

AsincTask нужен совет! - Программирование Android
Написал приложение, в кратце алгоритм следующий: 1. MainActivity, состоит из ListView и двух кнопок. Первая кнопка добавляет строку в...

Нужен вас совет - Программирование Android
У меня в планах реализовать простое приложение, подобие записной книжки с сервером) Хочу получать через json данные и выводить их на...

Нужен совет с облачными технологиями - Программирование Android
Здраствуйте.Нужна помощь. Тема диплома "Использование облачных технологий в андроид приложениях" ничего не могу найти по этой теме.Не...

Рисование пазлов, нужен совет - Программирование Android
Здравствуйте. Начал изучать программирование с написания Паззлов - аналога обычных картонных. Нужен совет в каком направлении двигать...

Нужен совет с программой с использованием карт - Программирование Android
Ребят, такая проблема. Решил на курсовую (1 курс) сделать приложение с использованием гуглокарт, код использовал отсюда...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Pablito
2494 / 1939 / 605
Регистрация: 12.05.2014
Сообщений: 6,798
Завершенные тесты: 1
11.03.2015, 11:35 #2
Я не специалист вообще и в код не вникал и поэтому просто спрошу - была очень веская причина назвать свой класс Preferences ?
0
dubok79
323 / 121 / 11
Регистрация: 01.11.2012
Сообщений: 586
11.03.2015, 11:36  [ТС] #3
Цитата Сообщение от Паблито Посмотреть сообщение
была очень веская причина назвать свой класс Preferences ?
Нет, без задней мысли так назвал, но уже переименовал...
0
Spelcrawler
526 / 496 / 111
Регистрация: 12.03.2014
Сообщений: 1,649
Завершенные тесты: 1
11.03.2015, 14:44 #4
А какая разница? Имя пакета-то другое. Этот класс никак не конфликтует со стандартным.
0
dubok79
323 / 121 / 11
Регистрация: 01.11.2012
Сообщений: 586
11.03.2015, 15:30  [ТС] #5
Цитата Сообщение от Spelcrawler Посмотреть сообщение
А какая разница? Имя пакета-то другое. Этот класс никак не конфликтует со стандартным.
Это точно, но на всякий случай, все же переименовал, так сказать для чистоты эксперимента.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
11.03.2015, 15:30
Привет! Вот еще темы с ответами:

Получение данных с сайта. Нужен совет - Программирование Android
Вообщем, есть сайт - база жилья. Каждая карточка жилья - описание + фото. Вопрос: каким образом лучше всего сделать пприложение для...

Нужен совет в выборе языка для приложения - Программирование
Добрый день Дамы и Господа! Нужна помощь в выборе языка для приложения. Приложение под Андроид. Приложение для фильтрации объявлений...

Приложение Android/iOS - нужен совет специалистов - Программирование Android
Всех приветствую! Являюсь владельцем блога на WordPress, хочу создать приложение на телефоны. Исходные таковы: 1. Сам не...

Нужен ваш совет. Игра или программа под Андроид - Программирование Android
Мне в течении двух месяцев надо писать приложения под Андроид. Это должна быть или программа-виджет, которая: 1) определяет, где сейчас...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
11.03.2015, 15:30
Ответ Создать тему
Опции темы

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