質問編集履歴

2

へんこう

2018/04/28 18:01

投稿

mercurian-teto
mercurian-teto

スコア75

test CHANGED
File without changes
test CHANGED
@@ -229,171 +229,3 @@
229
229
 
230
230
 
231
231
  ```
232
-
233
-
234
-
235
- ###別の解決策
236
-
237
- [このサイトを参考にしたら](http://androidguide.nomaki.jp/html/dlg/progress/prgdlgMain.html)望み通りの仕様になりました。
238
-
239
- ```
240
-
241
- public class MainActivity extends Activity {
242
-
243
- /** プログレスバー */
244
-
245
- private ProgressDialog mPrgDlg;
246
-
247
- public final int minutes =600;
248
-
249
-
250
-
251
-
252
-
253
- @Override
254
-
255
- public void onCreate(Bundle savedInstanceState) {
256
-
257
- super.onCreate(savedInstanceState);
258
-
259
- setContentView(R.layout.activity_main);
260
-
261
-
262
-
263
- // 実行中ダイアログの生成・初期化
264
-
265
- mPrgDlg = new ProgressDialog(this);
266
-
267
- mPrgDlg.setTitle("スレッド実行中");
268
-
269
- mPrgDlg.setMessage("しばらくお待ちください。");
270
-
271
- mPrgDlg.setIndeterminate(false);
272
-
273
- mPrgDlg.setProgressStyle(ProgressDialog.STYLE_SPINNER);
274
-
275
- mPrgDlg.setMax(100); // 最大値
276
-
277
- mPrgDlg.incrementProgressBy(0); // 初期値
278
-
279
-
280
-
281
- // ボタンクリック処理
282
-
283
- Button btnStart = (Button)findViewById(R.id.btn);
284
-
285
- btnStart.setOnClickListener(new OnClickListener() {
286
-
287
- public void onClick(View v) {
288
-
289
- // ダイアログ表示
290
-
291
- mPrgDlg.show();
292
-
293
-
294
-
295
- // スレッド生成・実行
296
-
297
- Thread thread = new Thread(runnable);
298
-
299
- thread.start();
300
-
301
- }
302
-
303
- });
304
-
305
- }
306
-
307
-
308
-
309
- /**
310
-
311
- * スレッド処理
312
-
313
- */
314
-
315
- Runnable runnable = new Runnable() {
316
-
317
- public void run() {
318
-
319
- for (int i=0; i<100; i++) {
320
-
321
- try {
322
-
323
- Thread.sleep(100);
324
-
325
- mPrgDlg.setProgress(i+1);
326
-
327
- } catch (InterruptedException e) {
328
-
329
- // TODO 自動生成された catch ブロック
330
-
331
- e.printStackTrace();
332
-
333
- }
334
-
335
-
336
-
337
- }
338
-
339
-
340
-
341
- Message msg = new Message();
342
-
343
- msg.arg1 = 0;
344
-
345
- handler.sendMessage(msg);
346
-
347
- }
348
-
349
- };
350
-
351
-
352
-
353
- /**
354
-
355
- * スレッドの終了を受信するハンドラ
356
-
357
- */
358
-
359
- private final Handler handler = new Handler() {
360
-
361
- @Override
362
-
363
- public void handleMessage(Message msg)
364
-
365
- {
366
-
367
- // 実行中ダイアログを閉じる
368
-
369
- mPrgDlg.dismiss();
370
-
371
- Toast.makeText(MainActivity.this, "遅延ボタンが押されました", Toast.LENGTH_LONG).show();
372
-
373
- };
374
-
375
- };
376
-
377
-
378
-
379
- @Override
380
-
381
- public void onPause(){
382
-
383
- super.onPause();
384
-
385
-
386
-
387
- finishAndRemoveTask();
388
-
389
- }
390
-
391
-
392
-
393
-
394
-
395
- }
396
-
397
-
398
-
399
- ```

1

追加

2018/04/28 18:01

投稿

mercurian-teto
mercurian-teto

スコア75

test CHANGED
File without changes
test CHANGED
@@ -229,3 +229,171 @@
229
229
 
230
230
 
231
231
  ```
232
+
233
+
234
+
235
+ ###別の解決策
236
+
237
+ [このサイトを参考にしたら](http://androidguide.nomaki.jp/html/dlg/progress/prgdlgMain.html)望み通りの仕様になりました。
238
+
239
+ ```
240
+
241
+ public class MainActivity extends Activity {
242
+
243
+ /** プログレスバー */
244
+
245
+ private ProgressDialog mPrgDlg;
246
+
247
+ public final int minutes =600;
248
+
249
+
250
+
251
+
252
+
253
+ @Override
254
+
255
+ public void onCreate(Bundle savedInstanceState) {
256
+
257
+ super.onCreate(savedInstanceState);
258
+
259
+ setContentView(R.layout.activity_main);
260
+
261
+
262
+
263
+ // 実行中ダイアログの生成・初期化
264
+
265
+ mPrgDlg = new ProgressDialog(this);
266
+
267
+ mPrgDlg.setTitle("スレッド実行中");
268
+
269
+ mPrgDlg.setMessage("しばらくお待ちください。");
270
+
271
+ mPrgDlg.setIndeterminate(false);
272
+
273
+ mPrgDlg.setProgressStyle(ProgressDialog.STYLE_SPINNER);
274
+
275
+ mPrgDlg.setMax(100); // 最大値
276
+
277
+ mPrgDlg.incrementProgressBy(0); // 初期値
278
+
279
+
280
+
281
+ // ボタンクリック処理
282
+
283
+ Button btnStart = (Button)findViewById(R.id.btn);
284
+
285
+ btnStart.setOnClickListener(new OnClickListener() {
286
+
287
+ public void onClick(View v) {
288
+
289
+ // ダイアログ表示
290
+
291
+ mPrgDlg.show();
292
+
293
+
294
+
295
+ // スレッド生成・実行
296
+
297
+ Thread thread = new Thread(runnable);
298
+
299
+ thread.start();
300
+
301
+ }
302
+
303
+ });
304
+
305
+ }
306
+
307
+
308
+
309
+ /**
310
+
311
+ * スレッド処理
312
+
313
+ */
314
+
315
+ Runnable runnable = new Runnable() {
316
+
317
+ public void run() {
318
+
319
+ for (int i=0; i<100; i++) {
320
+
321
+ try {
322
+
323
+ Thread.sleep(100);
324
+
325
+ mPrgDlg.setProgress(i+1);
326
+
327
+ } catch (InterruptedException e) {
328
+
329
+ // TODO 自動生成された catch ブロック
330
+
331
+ e.printStackTrace();
332
+
333
+ }
334
+
335
+
336
+
337
+ }
338
+
339
+
340
+
341
+ Message msg = new Message();
342
+
343
+ msg.arg1 = 0;
344
+
345
+ handler.sendMessage(msg);
346
+
347
+ }
348
+
349
+ };
350
+
351
+
352
+
353
+ /**
354
+
355
+ * スレッドの終了を受信するハンドラ
356
+
357
+ */
358
+
359
+ private final Handler handler = new Handler() {
360
+
361
+ @Override
362
+
363
+ public void handleMessage(Message msg)
364
+
365
+ {
366
+
367
+ // 実行中ダイアログを閉じる
368
+
369
+ mPrgDlg.dismiss();
370
+
371
+ Toast.makeText(MainActivity.this, "遅延ボタンが押されました", Toast.LENGTH_LONG).show();
372
+
373
+ };
374
+
375
+ };
376
+
377
+
378
+
379
+ @Override
380
+
381
+ public void onPause(){
382
+
383
+ super.onPause();
384
+
385
+
386
+
387
+ finishAndRemoveTask();
388
+
389
+ }
390
+
391
+
392
+
393
+
394
+
395
+ }
396
+
397
+
398
+
399
+ ```