【发布时间】:2013-09-04 17:13:28
【问题描述】:
我是 Android 新手,在使用 Intent 时遇到问题。我希望你能帮助我。
我想在一个活动中打开一个带有按钮的对话框。当您按下按钮时,它会再次加载相同的活动,但会重置一些参数。 就像第一轮,然后是第二轮。
我有一个有效的结束对话框,因为它调用了另一个活动 第二个对话框工作正常,我在另一个类中使用 show(在类 partida 的方法内),但他的问题是当下一轮的弹出窗口打开时我按下 OK。我不知道我可以放在那里。 我还声明了一些静态变量和普通变量。
这是我的代码:
partida partida;
public String animal, oculta, vidasS, puntosS, rondaS;
public TextView palabra, vidasrest, puntostot, rondanum;
ImageView vida;
Button []btn=new Button[27];
static int vidas=5;
static int puntos=0;
static int ronda=1;
static AlertDialog.Builder finalpartida, rondanueva;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
partida=new partida();
setContentView(R.layout.activity_partida);
finalpartida = new AlertDialog.Builder(this);
finalpartida.setTitle("Final de la partida");
finalpartida.setMessage("Click OK para finalizar partida");
finalpartida.setCancelable(false);
finalpartida.setNegativeButton("Ok", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface finalpartida, int id) {
//Creamos el Intent
Intent intent = new Intent(PartidaActivity.this, MainActivity.class);
vidas=5;
ronda=1;
puntos=0;
finish();
//Iniciamos la nueva actividad
startActivity(intent);
}
});
animal=partida.animal;
oculta=partida.inicializa(animal);
palabra = (TextView)findViewById(R.id.wordtxt);
palabra.setText(oculta);
vidasrest = (TextView)findViewById(R.id.txtvidas);
vidasS = Integer.toString(vidas);
vidasrest.setText("Vidas: "+vidasS);
vida = (ImageView)findViewById(R.id.imgvidas);
puntostot = (TextView)findViewById(R.id.txtPuntos);
puntosS = Integer.toString(puntos);
puntostot.setText("Puntos: "+puntosS);
rondanum = (TextView)findViewById(R.id.txtronda);
rondaS = Integer.toString(ronda);
rondanum.setText("Ronda: "+rondaS);
rondanueva = new AlertDialog.Builder(this);
rondanueva.setTitle("Fin de ronda "+ronda);
rondanueva.setMessage("Click OK para siguiente ronda");
rondanueva.setCancelable(false);
rondanueva.setNegativeButton("Ok", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface rondanueva, int id) {
vidas=5;
ronda++;
//THIS DOESN'T WORK
Intent intent = new Intent(PartidaActivity.this, RondaActivity.class);
finish();
startActivity(intent);
//NEITHER THIS: ((Activity) rondanueva).setTitle("Fin de ronda "+ronda);
animal=partida.animal;//nombre del animal
oculta=partida.inicializa(animal);//estructuro palabra vacía
palabra.setText(oculta);
vidasS = Integer.toString(vidas);
vidasrest.setText("Vidas: "+vidasS);
vida.setImageResource(R.drawable.vidas5);
rondaS = Integer.toString(ronda);
rondanum.setText("Ronda: "+rondaS);
}
});
}
错误日志当我使用 Intent i=getIntent() ;开始活动(一);在 onClick 里面
09-09 17:07:09.294: W/System.err(329): java.lang.NullPointerException: 资产 09-09 17:07:09.294:W/System.err(329):在 android.content.res.AssetManager.readAsset(本机方法) 09-09 17:07:09.354: W/System.err(329): 在 android.content.res.AssetManager.access$700(AssetManager.java:36) 09-09 17:07:09.354: W/System.err(329): 在 android.content.res.AssetManager$AssetInputStream.read(AssetManager.java:572) 09-09 17:07:09.364: W/System.err(329): 在 org.apache.harmony.xml.ExpatParser.parseFragment(ExpatParser.java:516) 09-09 17:07:09.364: W/System.err(329): 在 org.apache.harmony.xml.ExpatParser.parseDocument(ExpatParser.java:479) 09-09 17:07:09.364: W/System.err(329): at org.apache.harmony.xml.ExpatReader.parse(ExpatReader.java:318) 09-09 17:07:09.374: W/System.err(329): 在 org.apache.harmony.xml.ExpatReader.parse(ExpatReader.java:275) 09-09 17:07:09.374: W/System.err(329): 在 org.jdom2.input.sax.SAXBuilderEngine.build(SAXBuilderEngine.java:217) 09-09 17:07:09.374: W/System.err(329): 在 org.jdom2.input.sax.SAXBuilderEngine.build(SAXBuilderEngine.java:253) 09-09 17:07:09.374: W/System.err(329): at org.jdom2.input.SAXBuilder.build(SAXBuilder.java:1091) 09-09 17:07:09.374: W/System.err(329): 在 org.myproject.ahorcadoanimales.Xml.(Xml.java:25) 09-09 17:07:09.374: W/System.err(329): at org.myproject.ahorcadoanimales.partida.(partida.java:13) 09-09 17:07:09.394: W/System.err(329): 在 org.myproject.ahorcadoanimales.PartidaActivity.onCreate(PartidaActivity.java:36) 09-09 17:07:09.394: W/System.err(329): 在 android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047) 09-09 17:07:09.394: W/System.err(329): 在 android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1611) 09-09 17:07:09.394: W/System.err(329): 在 android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1663) 09-09 17:07:09.394: W/System.err(329): 在 android.app.ActivityThread.access$1500(ActivityThread.java:117) 09-09 17:07:09.394: W/System.err(329): 在 android.app.ActivityThread$H.handleMessage(ActivityThread.java:931) 09-09 17:07:09.394: W/System.err(329): 在 android.os.Handler.dispatchMessage(Handler.java:99) 09-09 17:07:09.394: W/System.err(329): 在 android.os.Looper.loop(Looper.java:123) 09-09 17:07:09.394: W/System.err(329): 在 android.app.ActivityThread.main(ActivityThread.java:3683) 09-09 17:07:09.394: W/System.err(329): 在 java.lang.reflect.Method.invokeNative(Native Method) 09-09 17:07:09.424: W/System.err(329): 在 java.lang.reflect.Method.invoke(Method.java:507) 09-09 17:07:09.424: W/System.err(329): 在 com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839) 09-09 17:07:09.444: W/System.err(329): 在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597) 09-09 17:07:09.444: W/System.err(329): at dalvik.system.NativeStart.main(Native Method) 09-09 17:07:09.564: D/AndroidRuntime(329): 关闭虚拟机 09-09 17:07:09.564: W/dalvikvm(329): threadid=1: 线程退出未捕获异常 (group=0x40015560) 09-09 17:07:09.604:E/AndroidRuntime(329):致命异常:主要 09-09 17:07:09.604: E/AndroidRuntime(329): java.lang.RuntimeException: 无法启动活动 ComponentInfo{org.myproject.ahorcadoanimales/org.myproject.ahorcadoanimales.PartidaActivity}: java.lang.NullPointerException 09-09 17:07:09.604: E/AndroidRuntime(329): 在 android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1647) 09-09 17:07:09.604: E/AndroidRuntime(329): 在 android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1663) 09-09 17:07:09.604: E/AndroidRuntime(329): 在 android.app.ActivityThread.access$1500(ActivityThread.java:117) 09-09 17:07:09.604: E/AndroidRuntime(329): 在 android.app.ActivityThread$H.handleMessage(ActivityThread.java:931) 09-09 17:07:09.604: E/AndroidRuntime(329): 在 android.os.Handler.dispatchMessage(Handler.java:99) 09-09 17:07:09.604: E/AndroidRuntime(329): 在 android.os.Looper.loop(Looper.java:123) 09-09 17:07:09.604: E/AndroidRuntime(329): 在 android.app.ActivityThread.main(ActivityThread.java:3683) 09-09 17:07:09.604: E/AndroidRuntime(329): 在 java.lang.reflect.Method.invokeNative(Native Method) 09-09 17:07:09.604: E/AndroidRuntime(329): 在 java.lang.reflect.Method.invoke(Method.java:507) 09-09 17:07:09.604: E/AndroidRuntime(329): 在 com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839) 09-09 17:07:09.604: E/AndroidRuntime(329): 在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597) 09-09 17:07:09.604: E/AndroidRuntime(329): at dalvik.system.NativeStart.main(Native Method) 09-09 17:07:09.604:E/AndroidRuntime(329):原因:java.lang.NullPointerException 09-09 17:07:09.604: E/AndroidRuntime(329): at org.myproject.ahorcadoanimales.partida.inicializa(partida.java:19) 09-09 17:07:09.604: E/AndroidRuntime(329): at org.myproject.ahorcadoanimales.PartidaActivity.onCreate(PartidaActivity.java:66) 09-09 17:07:09.604: E/AndroidRuntime(329): 在 android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047) 09-09 17:07:09.604: E/AndroidRuntime(329): 在 android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1611) 09-09 17:07:09.604: E/AndroidRuntime(329): ... 11 更多
【问题讨论】:
-
我对你想要什么感到困惑。您似乎没有尝试启动相同的
Activity。你是说这行不通,Intent intent = new Intent(PartidaActivity.this, RondaActivity.class);?如果是这样,什么不起作用?请更具体。另外,我认为这不是很好的做法。当您创建Activity时,它必须重新绘制布局并重置变量。您最好创建一个在对话框关闭时调用的方法。 -
意图 i=getIntent() ; startActivity(i) ;
-
对话框工作正常,我在另一个类中使用 show(在类 partida 的方法中)。问题是当我在下一轮程序崩溃的弹出窗口中按下 OK 时。
标签: android android-intent android-activity dialog android-dialog