PhoneListener 서비스 클래스에서 대화 상자를 팝업하려고했습니다. DialogBox Activity Class가 첨부되어 있습니다. 통화 상태가 변경되면 대화 상자가 나타납니다. 정적에서 캐스팅을 시도했지만 외관상 정적을 전혀 이해하지 못합니다. 나는 결코 AlerDialg.Builder를위한 활동이나 컨텍스트를 얻는 것처럼 보이지 않습니다. 여기서비스 클래스에서 활동으로 캐스팅 할 때 널 포인터 예외가 발생했습니다.
DialogBox.onCreateDialog2(1);
대화 상자 코드 : 여기에 PHoneListener 클래스 내 전화가
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;
}
}
나는에 NullPointerException이 얻을 ((대화 상자) activity.getApplicationContext()) .onCreateDialog (id);
ID는 전달되지만 null 활동이 발생합니다. 네, 개발 코드에 대해 잘 아는 사람이 아니므로 확실한 것이 빠졌습니다. 어떤 도움이라도 대단히 감사하겠습니다.