Форум программистов, компьютерный форум, киберфорум
Наши страницы
Программирование Android
Войти
Регистрация
Восстановить пароль
 
 
geometria
1 / 1 / 6
Регистрация: 13.01.2013
Сообщений: 107
#1

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

14.12.2016, 21:38. Просмотров 667. Ответов 30
Метки нет (Все метки)

Java
1
2
3
4
5
6
private SharedPreferences prefs;
        public void prefMethod()
        {
               this.mSettings = Integer.parseInt(prefs.getString("preference_radius",
"25"));
    }
Как правильно оформить этот метод?


Painting.java
Кликните здесь для просмотра всего текста
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
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
package com.livewallpaper;
 
import android.content.*;
import android.graphics.*;
import android.view.*;
import java.util.*;
 
public class LiveWallpaperPainting extends Thread implements Runnable{
        
        private SurfaceHolder surfaceHolder;
        private static final int MAX_COUNT = 17;
        int mSettings;
        Bitmap foni;
        Bitmap pic;
        Timer timer;
        int count;
        private boolean wait;
        private boolean run;
        private Paint mScorePaint;
        public LiveWallpaperPainting(SurfaceHolder surfaceHolder, final Context context, int radius) {
                this.surfaceHolder = surfaceHolder;
                this.wait = true;
                pic = BitmapFactory.decodeResource(context.getResources(), R.drawable.p01);
                mSettings=radius;
                
                
                mScorePaint = new Paint();
                mScorePaint.setTextSize(30);
                mScorePaint.setStrokeWidth(2);
                mScorePaint.setColor(Color.WHITE);
                
                foni = BitmapFactory.decodeResource(context.getResources(), R.drawable.fon2);
                timer = new Timer(); 
                timer.schedule(new TimerTask() {
                @Override
                public void run() {
                    if(count == MAX_COUNT ) count = 0;
                pic = BitmapFactory.decodeResource(context.getResources(), R.drawable.p01 + count);
                count++;
                          }
 
    }, 0,80);
 
        
        }   
        
    private SharedPreferences prefs;
        public void prefMethod()
        {
               this.mSettings = Integer.parseInt(prefs.getString("preference_radius",
"25"));
 
            //this.mSettings = Integer.parseInt("10");
    }
        public void pausePainting() {
                this.wait = true;
                synchronized(this) {
                        this.notify();
                }}
        public void resumePainting() {
                this.wait = false;
                synchronized(this) {
                        this.notify();
                } }
        public void stopPainting() {
                this.run = false;
                synchronized(this) {
                        this.notify();
                }}
        @Override
        public void run() {
            
                this.run = true;
                Canvas c = null;
                while (run) {
                        try {
                                c = this.surfaceHolder.lockCanvas(null);
                                synchronized (this.surfaceHolder) {
                                        Thread.sleep(50);
                                        doDraw(c);
                                }
                        } catch (InterruptedException e) {
                            e.printStackTrace();
                        } finally {
                                if (c != null) {
                                        this.surfaceHolder.unlockCanvasAndPost(c);
                                }
                        }
                        synchronized (this) {
                                if (wait) {
                                        try {
                                                wait();
                                        } catch (Exception e) {}
                                }
                        }
                }
        }
        int w; int h;
        int wp; int hp;
        int wpV; int wpH;
        int ws; int hs;
        public void setSurfaceSize(int width, int height) {
             this.w = width;
             this.h = height;
             this.wp = foni.getWidth();
             this.hp = foni.getHeight();
             this.wpV = wp*11/10;
             this.wpH = w*11/10;
             this.ws = h*3/5;
             this.hs = h*3/5;
                    synchronized(this) {
                     this.notify();
             }
     }
       float t = 0;
       float t2 = 0;
       int T = -1;
       int A = -1;
         public boolean doTouchEvent(MotionEvent event) {
             switch (event.getAction()){
             case MotionEvent.ACTION_DOWN:
                 t = event.getX();
             case MotionEvent.ACTION_MOVE:
             t2 = event.getX();
             if (t < t2 & w < h & T < 0){//пїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅ
                     T++;}
             if (t < t2 & w > h & A < 0){//пїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅпїЅ
                 A++;}
             if (t > t2 & w > h & A*3 > w-wpH){//пїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅпїЅ
                     A--;}
             if (t > t2 & w < h & T*7 > w-wpV){//пїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅ
                 T--;}
             }
            return true;
      }
         
         private void doDraw(Canvas canvas) {
             
                canvas.drawColor(Color.TRANSPARENT, PorterDuff.Mode.CLEAR);
                //canvas.drawColor(Color.WHITE);
               int prefs = mSettings;
                if (w < h){
                    Bitmap fon = Bitmap.createScaledBitmap(foni, wpV, h, false);
                    canvas.drawBitmap(fon, T*7, 0, null);// пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅ    пїЅпїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅ
                    Bitmap bmHalf = Bitmap.createScaledBitmap(pic, ws, hs, false);
                    canvas.drawBitmap(bmHalf, T*7+w/2, h-hs, null); 
                    canvas.drawText("пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅ - " + prefs, 50, 70, mScorePaint);
                    }
                if (w > h) {
                    Bitmap fon = Bitmap.createScaledBitmap(foni, wpH, h, false);
                    canvas.drawBitmap(fon, A*3, 0, null);// пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅ    пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅ
                    Bitmap bmHalf2 = Bitmap.createScaledBitmap(pic, ws, hs, false);
                    canvas.drawBitmap(bmHalf2, A*3+w/3, h/2, null);
                    canvas.drawText("пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ пїЅпїЅпїЅпїЅпїЅпїЅ - " + prefs, 50, 70, mScorePaint);}
                
                
                }
        
}

Service.java
Кликните здесь для просмотра всего текста

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
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
package com.livewallpaper;
 
import android.content.Context;
import android.content.SharedPreferences;
import android.service.wallpaper.WallpaperService;
import android.view.MotionEvent;
import android.view.SurfaceHolder;
 
public class LiveWallpaperService extends WallpaperService {
 
    public static final String APP_PREFERENCES = "mysettings";
    public static final String APP_PREFERENCE_RADIUS = "preference_radius";
    
    
    @Override
    public Engine onCreateEngine() {
                   return new SampleEngine();
    }
 
    @Override
    public void onCreate() {
            super.onCreate();
    }
 
    @Override
    public void onDestroy() {
            super.onDestroy();
    }
 
    public class SampleEngine extends Engine implements SharedPreferences.OnSharedPreferenceChangeListener {
 
            
            private LiveWallpaperPainting painting;
            private SharedPreferences prefs;
            SharedPreferences mSettings;
            
            SampleEngine() {
                    SurfaceHolder holder = getSurfaceHolder();
                    prefs = LiveWallpaperService.this.getSharedPreferences(APP_PREFERENCES, 0);
                    prefs.registerOnSharedPreferenceChangeListener(this);
                    painting = new LiveWallpaperPainting(holder, getApplicationContext(), 
                                Integer.parseInt(prefs.getString(APP_PREFERENCE_RADIUS, "10")));
                    
                    
                                        
            }
 
            public void onSharedPreferenceChanged(SharedPreferences prefs, String key) {
painting.prefMethod();
    //mSettings = getSharedPreferences(APP_PREFERENCES, Context.MODE_PRIVATE);
                //    super.onCreate(surfaceHolder);
                  
                                            }
 
 
 
 @Override
            public void onCreate(SurfaceHolder surfaceHolder) {
                mSettings = getSharedPreferences(APP_PREFERENCES, Context.MODE_PRIVATE);
                    super.onCreate(surfaceHolder);
                    setTouchEventsEnabled(true);
            }
 
            @Override
            public void onDestroy() {
                    super.onDestroy();
                    // remove listeners and callbacks here
                    painting.stopPainting();
            }
 
            @Override
            public void onSurfaceChanged(SurfaceHolder holder, int format, int width, int height) {
                    super.onSurfaceChanged(holder, format, width, height);
                    painting.setSurfaceSize(width, height);
            }
 
            @Override
            public void onSurfaceCreated(SurfaceHolder holder) {
                    super.onSurfaceCreated(holder);
                    painting.start();
                    
            }
 
 
            @Override
            public void onVisibilityChanged(boolean visible) {
                    if (visible) {
                            painting.resumePainting();
                    } else {
                            // remove listeners and callbacks here
                            painting.pausePainting();
                    }
            }
            
            @Override
            public void onSurfaceDestroyed(SurfaceHolder holder) {
                    super.onSurfaceDestroyed(holder);
                    boolean retry = true;
                    painting.stopPainting();
                    while (retry) {
                            try {
                                    painting.join();
                                    retry = false;
                            } catch (InterruptedException e) {}
                    }
            }
 
 
            @Override
            public void onTouchEvent(MotionEvent event) {
                    super.onTouchEvent(event);
                    painting.doTouchEvent(event);
            }
            
    }
    
}
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.12.2016, 21:38
Я подобрал для вас темы с готовыми решениями и ответами на вопрос При изменении настройки в приложении выскакивает ошибка (Программирование Android):

При работе с IntentService выскакивает ошибка
Почему она выскакивает? Installation failed with message Failed to...

Ошибка приложения, при изменении эмулятора
Суть проблемы: запускаю приложение на эмуляторе под разрешение показанное на...

"В приложении произошла ошибка" при нажатии на кнопку перехода на какую-либо активность
Нужно было несколько функций в одно приложение соединить..Отдельно каждая из...

При запуске приложения на Android оно крашится и вылетает с ошибкой "В приложении %название% произошла ошибка"
Как посмотреть логи ошибки? Игра просто была установлена, она не...

Почему после выхода из приложения выскакивает ошибка?
Я начал писать программу для андроид (плеер) Скомпилировал, установил на свое...

Когда жму Назад выскакивает ошибка Unfortunately <my app> has stopped
Здравствуйте! Пишу игру под андроид. Все работает хорошо за исключением одного...

30
geometria
1 / 1 / 6
Регистрация: 13.01.2013
Сообщений: 107
15.12.2016, 14:35  [ТС] #21
с вылетом приложения и перезапуском настройка сохранялась
0
vxg
Модератор
3231 / 2034 / 319
Регистрация: 13.01.2012
Сообщений: 7,885
15.12.2016, 14:43 #22
Цитата Сообщение от geometria Посмотреть сообщение
с вылетом приложения и перезапуском настройка сохранялась
может вы наконец скажите ошибку или мы продолжаем лечить по фотографии?
0
Pablito
15.12.2016, 14:45
  #23

Не по теме:

делаем ставки, там java.lang.NumberFormatException

0
vxg
15.12.2016, 14:52
  #24

Не по теме:

если текст полный то там должно быть NPE

0
geometria
1 / 1 / 6
Регистрация: 13.01.2013
Сообщений: 107
15.12.2016, 15:53  [ТС] #25
я не могу посмотреть лог ошибок, так как работаю не в эмуляторе, а на IDE под андроид
поэтому отправляю исходники
0
Вложения
Тип файла: zip cash_pref.zip (365.7 Кб, 1 просмотров)
vxg
Модератор
3231 / 2034 / 319
Регистрация: 13.01.2012
Сообщений: 7,885
15.12.2016, 16:34 #26
geometria, к сожалению у меня нет возможности их запускать. лог ошибок можно посмотреть где угодно - и на эмуляторе и на реальном устройстве и с IDE и без нее. скачайте например это https://play.google.com/store/apps/details?id=org.jtb.alogcat&hl=ru и ищите
0
demixdn
288 / 235 / 70
Регистрация: 31.10.2016
Сообщений: 563
15.12.2016, 16:56 #27
geometria, почему вы везде напихали
Java
1
MainActivity.this.finish();
а потом, после этого пытаетесь что-то вызвать? вы знаете, что делает строчка выше?
0
geometria
1 / 1 / 6
Регистрация: 13.01.2013
Сообщений: 107
15.12.2016, 17:51  [ТС] #28
demixdn, закомментировала все три финиша в Main.Activity - безрезультатно
0
demixdn
288 / 235 / 70
Регистрация: 31.10.2016
Сообщений: 563
15.12.2016, 19:51 #29
geometria,
Java
1
getPreferenceManager().setSharedPreferencesName(LiveWallpaperService.APP_PREFERENCES);
Java
1
public static final String APP_PREFERENCES = "mysettings";
Java
1
2
prefs = getSharedPreferences("settings", Context.MODE_PRIVATE);
painting = new LiveWallpaperPainting(holder, getApplicationContext(), Integer.parseInt(prefs.getString(APP_PREFERENCE_RADIUS, "10")));
Теперь видите, почему там всегда 10?

И это не самая ваша большая проблема. Во время клацанья по кнопкам у меня вылетали и SecurityException: Permission Denial, и OutOfMemory, когда картинку установил.
1
geometria
1 / 1 / 6
Регистрация: 13.01.2013
Сообщений: 107
15.12.2016, 21:20  [ТС] #30
разобрались вместе с demixdn, спасибо всем
1
pompiduskus
1 / 1 / 0
Регистрация: 07.03.2012
Сообщений: 15
16.12.2016, 12:40 #31
Хочу сказать что я частично был не прав! Извините !
1
16.12.2016, 12:40
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
16.12.2016, 12:40
Привет! Вот еще темы с решениями:

Что за пароль выскакивает при загрузке эмулятора
Ничего не понимаю, эмулятор загружается и запрашивает какой-то пароль. Люди...

Почему выскакивает уведомление при попытке запустить apk ?
Добрый день, открываю APK файл для установки его на android с помощью данного...

В приложении произошла ошибка
Всем привет начал изучать андроид программирования и вот хотел сделать пост...

При изменении шрифта на собственный вылетает приложение
Вылетает как только открываю Activity, которому принадлежит данный TextView....


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

Или воспользуйтесь поиском по форуму:
31
Ответ Создать тему
Опции темы

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