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

Почему Canvas не выводит текст? - Программирование Android

Войти
Регистрация
Восстановить пароль
Другие темы раздела
Программирование Android Как понять в какой программе создан исходник? http://www.cyberforum.ru/android-dev/thread1173046.html
Есть папка с исходниками. Как понять в чём эти исходники были созданы - то ли в Eclipse, от ли в AndroidStudio?
Программирование Android Получение контекста! Здавствуйте участники форума! :) На повестке возник такой вопрос. Обрисую ситуацию-> Есть класс, унаследованный от родителя, привязанного к активити. Как мне в этом классе получить контекст... http://www.cyberforum.ru/android-dev/thread1172981.html
Программирование Android Убрать отступы элементов
По данному примеру делаю таблицу http://www.cyberforum.ru/blogs/344609/blog2338.html как убрать отступ 2 мм со всех сторон
Перенос проектов Программирование Android
Ребята как перенести андроид проект с одного компа на другой? Просто скопировать папку а на другом компе через импорт?
Программирование Android Всплывающее сообщение (Toast) http://www.cyberforum.ru/android-dev/thread1172849.html
Здравствуйте! Прочитал несколько раз 12 урок, но никак не смог реализовать. Сделал обычный калькулятор и нужно чтобы когда делил на ноль всплывало сообщение "На ноль делить нельзя" Когда делю:...
Программирование Android Интеграция рекламы в андроидное приложение с возможностью платного отключения Собираюсь опубликовать прогу на 4pda (для регистрации в play store платить 25$, скорее всего, нецелесообразно). На хабре видел пару статей на эту тему. Бегло пробежавщись, сложилось впечатление, что... подробнее

Показать сообщение отдельно
phpk
26 / 26 / 6
Регистрация: 15.05.2013
Сообщений: 1,068
14.05.2014, 19:21  [ТС]
Вот код, который как я говорил выдаёт ошибку после закрытия! "В приложении "MyGame" произошла ошибка"
И надпись в самом приложении "hello" появляется через секунд 3-4.
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
160
161
162
163
164
package com.mycompany.game;
 
import android.app.*;
import android.os.*;
import android.view.*;
import android.widget.*;
import android.content.Context;
import android.content.res.Resources;
import android.graphics.Bitmap;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.Rect;
import android.graphics.Typeface;
import android.graphics.Paint.Style;
import android.util.Log;
import android.view.View;
import android.view.KeyEvent;
import android.view.SurfaceHolder;
import android.view.View.OnTouchListener;
import android.view.MotionEvent;
import android.nfc.*;
 
public class MainActivity extends Activity
{
    MySurface surface = null;
 
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        
         
        surface = new MySurface(this);
        setContentView(surface);
    }
    
////////////////////
////////////////////
    public class MySurface extends SurfaceView 
    implements SurfaceHolder.Callback, OnTouchListener
    {
        MyThread thread = null;
        SurfaceHolder holder;
        private static final String TAG = "test";
 
        MySurface(Context context)
        {
            super(context);
            
            holder = getHolder();
            holder.addCallback(this);
            
            thread = new MyThread(holder);
            
            setOnTouchListener(this);
            
        }
 
        @Override
        public void surfaceCreated(SurfaceHolder p1)
        {
            // TODO: Implement this method
            
            try{
                thread.running = true;
                thread.start();
            }catch(Exception e){
            //  e.printStackTrace();
            }
            //Log.d(TAG,"create");
        }
 
        @Override
        public void surfaceChanged(SurfaceHolder p1, int p2, int p3, int p4)
        {
            // TODO: Implement this method
        }
 
        @Override
        public void surfaceDestroyed(SurfaceHolder p1)
        {
            // TODO: Implement this method
            boolean retry = true;
            
            thread.running = false;
            
            while (retry)
            {
                try
                {
                    thread.join();
                    retry = false;
                    Log.d(TAG,"surfacedelete");
                }
                catch (InterruptedException e)  {
                    //Log.d(TAG, e.getMessage());
                    //e.printStackTrace();
                    
                }
            }
        }
 
        @Override
        public boolean onTouch(View v, MotionEvent event)
        {
            
            return false;
        }
    }
    
    /////////////////
    /////////////////
    public class MyThread extends Thread
    {
        boolean running = false;
        Paint p;
        SurfaceHolder holder;
 
        MyThread(SurfaceHolder h){
            holder = h;
            p = new Paint();
            //running = true;
            //Log.d("thread","constr");
        }
 
 
        public void setRunning(boolean r){
            running = r;
        }
 
        @Override
        public void run()
        {
            // TODO: Implement this method
            p.setColor(Color.RED);
            
            while (running)
            {
                Canvas canv = null;
                try
                {
 
                    canv = holder.lockCanvas();
                    synchronized(holder){
                        canv.drawText("hello",260,500, p);
                        
                    }
                    //  Thread.sleep(100);
                
                }catch (Exception e){}
                finally{
                    //if(canv != null)
                        holder.unlockCanvasAndPost(canv);}
                //}catch(Exception e){}
                
            }
        }
 
 
    }
    
}
а вот логи:
...
... D dalvikvm com.mycompany.game threadid=13: exiting
... W dalvikvm com.mycompany.game threadid=13: thread exiting with uncaught exception (group=0x41fb39a8)
... E AndroidRuntime dalvikvm com.mycompany.game FATAL EXCEPTION: Thread-3725
... E AndroidRuntime dalvikvm com.mycompany.game java.lang.IllegalArgumentException
... E AndroidRuntime dalvikvm com.mycompany.game at android.view.Surface.nativeUnlockCanvasAndPost(Native Method)
... E AndroidRuntime dalvikvm com.mycompany.game at android.view.Surface.unlockCanvasAndPost(Surface.java:459)
... E AndroidRuntime dalvikvm com.mycompany.game at android.view.SurfaceView$4.unlockCanvasAndPost(SurfaceView.java:859)
... E AndroidRuntime dalvikvm com.mycompany.game at com.mycompany.game.MainActivity$MyThread.run(MainActivity.java:155)


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