質問編集履歴
3
情報の追加
title
CHANGED
File without changes
|
body
CHANGED
@@ -20,7 +20,7 @@
|
|
20
20
|
PhoneReceiverのコードは下に記載しています。
|
21
21
|
それとも根本的にやり方を変えた方がよいのでしょうか。
|
22
22
|
|
23
|
-
※捕捉
|
23
|
+
※捕捉1
|
24
24
|
あるサイトでこのような解決方法を見つけたのですが、
|
25
25
|
```Java
|
26
26
|
public void showWarningAlert(Context context) { //Added argument
|
@@ -38,6 +38,31 @@
|
|
38
38
|
}
|
39
39
|
```
|
40
40
|
結局アプリは強制終了する状態です。alertDialog.show()のところでエラーが出ています。
|
41
|
+
|
42
|
+
※捕捉2
|
43
|
+
Logcatの内容です。PhoneReceiverに青文字がついています。
|
44
|
+
```Java
|
45
|
+
05-11 09:13:42.101 26582-26582/com.example.ma2ri.newstage E/AndroidRuntime: FATAL EXCEPTION: main
|
46
|
+
Process: com.example.ma2ri.newstage, PID: 26582
|
47
|
+
java.lang.IllegalStateException: You need to use a Theme.AppCompat theme (or descendant) with this activity.
|
48
|
+
at android.support.v7.app.AppCompatDelegateImplV7.createSubDecor(AppCompatDelegateImplV7.java:343)
|
49
|
+
at android.support.v7.app.AppCompatDelegateImplV7.ensureSubDecor(AppCompatDelegateImplV7.java:312)
|
50
|
+
at android.support.v7.app.AppCompatDelegateImplV7.setContentView(AppCompatDelegateImplV7.java:277)
|
51
|
+
at android.support.v7.app.AppCompatDialog.setContentView(AppCompatDialog.java:80)
|
52
|
+
at android.support.v7.app.AlertController.installContent(AlertController.java:214)
|
53
|
+
at android.support.v7.app.AlertDialog.onCreate(AlertDialog.java:256)
|
54
|
+
at android.app.Dialog.dispatchOnCreate(Dialog.java:578)
|
55
|
+
at android.app.Dialog.show(Dialog.java:314)
|
56
|
+
at com.example.ma2ri.newstage.PhoneReceiver.showWarningAlert(PhoneReceiver.java:173)
|
57
|
+
at com.example.ma2ri.newstage.PhoneReceiver.onCallStateChanged(PhoneReceiver.java:60)
|
58
|
+
at android.telephony.PhoneStateListener$1.handleMessage(PhoneStateListener.java:323)
|
59
|
+
at android.os.Handler.dispatchMessage(Handler.java:102)
|
60
|
+
at android.os.Looper.loop(Looper.java:158)
|
61
|
+
at android.app.ActivityThread.main(ActivityThread.java:7237)
|
62
|
+
at java.lang.reflect.Method.invoke(Native Method)
|
63
|
+
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1230)
|
64
|
+
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1120)
|
65
|
+
```
|
41
66
|
|
42
67
|
|
43
68
|
```Java
|
2
書式の改善
title
CHANGED
File without changes
|
body
CHANGED
@@ -1,12 +1,14 @@
|
|
1
1
|
着信が入った時にダイアログを表示するアプリを作っていまして、素人ながらもいろいろなサイトを参考にしながらそれなりに形にはなっているのですが、ダイアログの表示でもう1か月以上滞っていて、ヒントだけでも頂けると助かります。
|
2
2
|
|
3
3
|
着信の状態を捕捉するクラス(PhoneReceiver.class)を下の様に作っていまして、着信が入ると
|
4
|
+
```Java
|
4
5
|
AlertDialog.Builder builder = new AlertDialog.Builder(context);
|
5
6
|
builder.setMessage(R.string.dialog_message)
|
6
7
|
.setTitle(R.string.dialog_title)
|
7
8
|
.setPositiveButton(R.string.dialog_button, null)
|
8
9
|
.setView(layout);
|
9
10
|
builder.show();
|
11
|
+
```
|
10
12
|
という形でAlertDialogを表示させようとしましたが、アプリが強制終了します。
|
11
13
|
PhoneReceiverクラスがActivityクラスじゃないということが理由なのだろうと思いつつも、具体的な解決策を出せないでいます。
|
12
14
|
androidの公式サイトを見れば、DialogFragmentを推奨されていたので、同様にPhoneReceiverクラスがActivityでもFragmentクラスでもないために表示されないものと思います。
|
@@ -20,6 +22,7 @@
|
|
20
22
|
|
21
23
|
※捕捉
|
22
24
|
あるサイトでこのような解決方法を見つけたのですが、
|
25
|
+
```Java
|
23
26
|
public void showWarningAlert(Context context) { //Added argument
|
24
27
|
AlertDialog alertDialog = new AlertDialog.Builder(context).create(); //Use context
|
25
28
|
alertDialog.setTitle("Warning");
|
@@ -33,9 +36,11 @@
|
|
33
36
|
alertDialog.getWindow().setType(WindowManager.LayoutParams.TYPE_SYSTEM_ALERT);
|
34
37
|
alertDialog.show();
|
35
38
|
}
|
39
|
+
```
|
36
40
|
結局アプリは強制終了する状態です。alertDialog.show()のところでエラーが出ています。
|
37
41
|
|
38
42
|
|
43
|
+
```Java
|
39
44
|
class PhoneReceiver extends PhoneStateListener {
|
40
45
|
private int totalCount = 0;
|
41
46
|
private Context context;
|
@@ -96,4 +101,5 @@
|
|
96
101
|
return 0;
|
97
102
|
}
|
98
103
|
}
|
104
|
+
```
|
99
105
|
_
|
1
情報の追加
title
CHANGED
File without changes
|
body
CHANGED
@@ -17,6 +17,23 @@
|
|
17
17
|
ですので、元のとおり、AlertDialogを表示する方法、ヒント等ありましたら、教えていただきたく質問いたします。
|
18
18
|
PhoneReceiverのコードは下に記載しています。
|
19
19
|
それとも根本的にやり方を変えた方がよいのでしょうか。
|
20
|
+
|
21
|
+
※捕捉
|
22
|
+
あるサイトでこのような解決方法を見つけたのですが、
|
23
|
+
public void showWarningAlert(Context context) { //Added argument
|
24
|
+
AlertDialog alertDialog = new AlertDialog.Builder(context).create(); //Use context
|
25
|
+
alertDialog.setTitle("Warning");
|
26
|
+
alertDialog.setMessage("You are currently in a battle");
|
27
|
+
alertDialog.setButton(AlertDialog.BUTTON_NEUTRAL, "OK",
|
28
|
+
new DialogInterface.OnClickListener() {
|
29
|
+
public void onClick(DialogInterface dialog, int which) {
|
30
|
+
dialog.dismiss();
|
31
|
+
}
|
32
|
+
});
|
33
|
+
alertDialog.getWindow().setType(WindowManager.LayoutParams.TYPE_SYSTEM_ALERT);
|
34
|
+
alertDialog.show();
|
35
|
+
}
|
36
|
+
結局アプリは強制終了する状態です。alertDialog.show()のところでエラーが出ています。
|
20
37
|
|
21
38
|
|
22
39
|
class PhoneReceiver extends PhoneStateListener {
|