【发布时间】:2016-04-19 13:20:06
【问题描述】:
您好,我是 android 新手,我创建了一个 Utils 类,并在那里创建了一个警报对话框。
当我单击“确定”和“取消”按钮时,我想使用接口方法在我的MainActivity 中处理该单击操作。
但是使用下面的代码,我得到了如下异常:
java.lang.NullPointerException: Attempt to invoke interface method 'void com.example.venkat.implementinterfacemethods.CommonUtilities$BackGroundDialogeCall.doDialogueExecute(java.lang.String)' on a null object reference
CommonUtilities:-
public class CommonUtilities {
BackGroundDialogeCall backGroundDialogeCall;
public interface BackGroundDialogeCall {
void doDialogueExecute(String result);
}
//Adding Dialoge box:-
public void displaySignOutAlertDialog(Context activity) {
new AlertDialog.Builder(activity)
.setTitle("Alert")
.setMessage("Are you sure want to reserve?")
.setPositiveButton(android.R.string.yes,
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog,
int which) {
dialog.dismiss();
backGroundDialogeCall.doDialogueExecute("yes");
}
})
.setNegativeButton(android.R.string.no,
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog,
int which) {
dialog.dismiss();
backGroundDialogeCall.doDialogueExecute("no");
}
}).show();
}
}
MainActivity:-
public class MainActivity extends AppCompatActivity implements CommonUtilities.BackGroundDialogeCall {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
CommonUtilities commonUtilities = new CommonUtilities();
commonUtilities.displaySignOutAlertDialog(MainActivity.this);
}
@Override
public void doDialogueExecute(String result) {
if(result.equals("yes")){
Log.d("=======>","if block");
}else{
Log.d("=======>","else block");
}
}
}
【问题讨论】:
-
你能指出导致此异常的行吗
-
您尚未在 CommonUtilities 类中初始化 backGroundDialogeCall。像这样 backGroundDialogeCall = (BackGroundDialogeCall) 活动;
-
你能告诉我如何在 CommonUtilities 类中初始化 backGroundDialogeCall
-
因为我是安卓新手
-
是在 displaySignOutAlertDialog 方法中