我正在尝试在Android中开发一款游戏,当我的玩偶在屏幕上用一个瓶子崩溃时,会显示一个带有2个选项的Dialog,但我不知道......
public void whenDollCrash(Grafico elementofaba,Grafico elementoBotella){
if((elementofaba.getPosX()+elementofaba.getAncho()>=elementoBotella.getPosX()+15)&&
(elementofaba.getPosX()+elementofaba.getAncho() <= elementoBotella.getPosX()+elementoBotella.getAncho()+15)&&
(elementofaba.getPosY()+elementofaba.getAlto()>=elementoBotella.getPosY())
&& (elementofaba.getPosY()+elementofaba.getAlto() <= elementoBotella.getPosY()+elementoBotella.getAlto())){
juego.detener();
hiloFaba.detener();
sonidoJuego.stop();
golpe.start();
Async a= main.new Async();
a.execute();
Log.i("parada", "esto furruca");
}
我的班级AsyncTask是下一个。 公共类Async扩展AsyncTask { AlertDialog.Builder构建器;
@Override
protected Void doInBackground(Void... params) {
return null;
}
@Override
protected void onPreExecute() {
super.onPreExecute();
builder =
new AlertDialog.Builder(MainActivity.this);
}
@Override
protected void onPostExecute(Void result) {
// TODO Auto-generated method stub
super.onPostExecute(result);
builder.setMessage("¿Confirma la acción seleccionada?")
.setTitle("Confirmacion")
.setPositiveButton("Aceptar", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
dialog.cancel();
}
})
.setNegativeButton("Cancelar", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
dialog.cancel();
}
});
builder.create().show();
}
帮助我!!
在logCat中始终显示NullPointerException
答案 0 :(得分:0)
这家伙看起来很可疑
Async a= main.new Async();
你应该使用这样的东西
public class Async extends AsyncTask<Void, Void, Void> {
AlertDialog.Builder builder;
WeakReference<Activity> activityWeakRef;
public Async(Activity context) {
activityWeakRef = new WeakReference<Activity>(context);
}
@Override
protected Void doInBackground(Void... params) {
return null;
}
@Override
protected void onPreExecute() {
super.onPreExecute();
}
@Override
protected void onPostExecute(Void result) {
super.onPostExecute(result);
if (activityWeakRef != null && activityWeakRef.get() != null) {
builder = new AlertDialog.Builder(activityWeakRef.get());
builder.setMessage("¿Confirma la acción seleccionada?").setTitle("Confirmacion").setPositiveButton("Aceptar", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
dialog.cancel();
}
}).setNegativeButton("Cancelar", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
dialog.cancel();
}
});
builder.create().show();
}
}
}
并在自定义视图中使用它
Async a = new Async((Activity) getContext());
a.execute()