回答編集履歴

1

コメントへの回答

2018/07/30 17:28

投稿

razuma
razuma

スコア1313

test CHANGED
@@ -37,3 +37,129 @@
37
37
  そこで別のスレッドで処理を行うことで、メインの処理が止まらないので描画が行われます。
38
38
 
39
39
  スレッドの概念などについては調べてみてください。
40
+
41
+
42
+
43
+ コメントへの回答:
44
+
45
+ アプリが落ちた場合にはエラー内容を貼っていただけるとありがたいです。
46
+
47
+ `tm.start();`の部分は特にこのように処理する必要もなく、動かなかったので`time tm = new time();`も消して、以下に書き換えて単純にsleepだけするようにしていました。
48
+
49
+ ```
50
+
51
+ try {
52
+
53
+ Thread.sleep(500);
54
+
55
+ } catch (InterruptedException e) {
56
+
57
+ }
58
+
59
+ ```
60
+
61
+
62
+
63
+ これで私の環境では動いていました。
64
+
65
+ もしこれで動かなかった際には以下のように書き換えてみてください。
66
+
67
+ `textView.setText(screen)`のみmainスレッドで処理するようにしています。
68
+
69
+
70
+
71
+ ```
72
+
73
+ public class MainActivity extends AppCompatActivity {
74
+
75
+
76
+
77
+ Handler mHandler;
78
+
79
+
80
+
81
+ // 省略
82
+
83
+
84
+
85
+ @Override
86
+
87
+ protected void onCreate(Bundle savedInstanceState) {
88
+
89
+ super.onCreate(savedInstanceState);
90
+
91
+ setContentView(R.layout.activity_main);
92
+
93
+
94
+
95
+ mHandler = new Handler();
96
+
97
+
98
+
99
+ new Thread(new Runnable() {
100
+
101
+ @Override
102
+
103
+ public void run() {
104
+
105
+ blockoutput();
106
+
107
+ }
108
+
109
+ }).start();
110
+
111
+ }
112
+
113
+
114
+
115
+ protected void display() {
116
+
117
+
118
+
119
+ screen = "";
120
+
121
+
122
+
123
+ for (i = 0; i <= 20; i++) {
124
+
125
+ for (j = 0; j <= 12; j++) {
126
+
127
+ if (field[i][j] == 1) {
128
+
129
+ screen = screen + '■';
130
+
131
+ } else if (field[i][j] == 0) {
132
+
133
+ screen = screen + '□';
134
+
135
+ } else {
136
+
137
+ screen = screen + '\n';
138
+
139
+ }
140
+
141
+ }
142
+
143
+ }
144
+
145
+
146
+
147
+ mHandler.post(new Runnable() {
148
+
149
+ @Override
150
+
151
+ public void run() {
152
+
153
+ TextView textView = findViewById(R.id.puzzle);
154
+
155
+ textView.setText(screen);
156
+
157
+ }
158
+
159
+ });
160
+
161
+ }
162
+
163
+ // 省略
164
+
165
+ ```