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

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

Войти
Регистрация
Восстановить пароль
Другие темы раздела
Программирование Android Почему тормозят игры на Sony Z 2? http://www.cyberforum.ru/android-dev/thread1392199.html
тормозят игры на Sony Experia Z 2,такие как Real racing 3,aspalt 8,Game of thrones,Hungry shark evolution,другие игры пока не тестировал, сам телефон иногда зависает, прошивка 4.4.4 кит кат, недавно...
Программирование Android Вытащить из HashSet объект HashMap В первую очередь хочу высказать недоумение касаемо того, зачем разработчики системы в качестве массивов в Shared Preference выбрали столько неподходящий для этой задачи HashSet. И так, есть вот такой... http://www.cyberforum.ru/android-dev/thread1391777.html
Импорт из Eclipse в Android Studio: ошибка Программирование Android
при импорте из Eclipse в AS, выскакивает ошибка, как лечить кто знает ?
Проверка свежей версии на GooglePlay Программирование Android
Пробую проверять на GooglePlay свежую версия программы с помощью androidquery. Для теста в манифесте понизил versionCode и versionName. Проверяю: MarketService ms = new MarketService(this);...
Программирование Android Получение ориентации http://www.cyberforum.ru/android-dev/thread1391543.html
Добрый день! Хочу узнать ориентацию, написал функцию: public void getOrintashion () { TextView orint = (TextView)findViewById(R.id.textView1); TextView kod =...
Программирование Android Темы и стили Всем привет, предположим в приложении есть два листвью которые отрисовываются по разному т.е есть два каких то стиля <style name="CustomListView1" parent="@android:style/Widget.ListView"> ...... подробнее

Показать сообщение отдельно
dubok79
323 / 121 / 11
Регистрация: 01.11.2012
Сообщений: 586

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

11.03.2015, 11:31. Просмотров 299. Ответов 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
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru