PhoneListener サービス クラスからダイアログをポップアップしようとしています。DialogBox アクティビティ クラスがアタッチされています。通話状態が変化したときにダイアログをポップしようとしています。static からのキャストを試みましたが、どうやら static をまったく理解していないようです。AlerDialg.Builder のアクティビティまたはコンテキストを取得できないようです。PHoneListener クラスでの呼び出しは次のとおりです。
DialogBox.onCreateDialog2(1);
ダイアログボックスのコードは次のとおりです。
public abstract class DialogBox extends Activity {
static abstract interface DialogBoxPopUp {
void onCreateDialog(int id);
void onCreateDialog2(int id);
}
Dialog dialog = null;
int DIALOG_X = 1;
int DIALOG_Y = 2;
int DIALOG_Z = 3;
private static Activity activity = null;
private static final String LOGTAG = "DialogBoxPopUp";
AlertDialog alertDialog;
public Dialog onCreateDialog(int id) {
switch(id) {
case 1:
// do the work to define the X Dialog
AlertDialog.Builder builder=new AlertDialog.Builder(activity.getParent());
PMLog.d(LOGTAG, "Got to PopUp, have an activity?");
builder
.setTitle("Privus Mobile")
.setMessage("Lookup this number?")
.setPositiveButton(R.string.yes, new DialogInterface.OnClickListener()
{
public void onClick(DialogInterface dialog, int which)
{
onYes();
}
})
.setNegativeButton(R.string.no, new DialogInterface.OnClickListener()
{
public void onClick(DialogInterface dialog, int which)
{
onNo();
}
})
.setOnCancelListener(new DialogInterface.OnCancelListener()
{
public void onCancel(DialogInterface dialog)
{
onNo();
}
})
.show();
PMLog.d(LOGTAG, "Got to show");
break;
default:
dialog = null;
}
return dialog;
}
public static void onYes() {
PrivusPhoneStateListener.lookupCallerId();
}
public static void onNo() {
return;
}
public static Dialog onCreateDialog2(int id) {
((DialogBox) activity.getApplicationContext()).onCreateDialog(id);
return null;
}
}
((DialogBox)activity.getApplicationContext()).onCreateDialog(id); で NullPointerException が発生します。
ID は渡されますが、null アクティビティが発生します。はい、私は開発コードに精通していないので、明らかな何かが欠けていると確信しています。どんな助けでも大歓迎です。