【发布时间】:2013-03-07 11:48:38
【问题描述】:
我制作了一个执行以下操作的应用:
活动 A --> 活动 B --> 活动 C
活动 A --> 活动 B2 --> 活动 C
当您关闭 B、B2 或 C 时,它会转到上一个活动。如果你关闭 A,它就会从应用程序中退出。
如果您从 B 到达 C,C 以一种方式工作,但如果您从 B2 到达,C 以一种不同的方式工作。
这在模拟器和我可以检查的所有设备中完美运行,但在两个带有 android 4.0.4 的 Xperia(型号 ARC 和 U)中出现了问题。
当他们从 B 到达 C 时,问题就出现了。当他们关闭 C 时,他们回到 A 而不是 B。如果他们从 B2 到达 C,当他们关闭时又回到 B2。
我无法理解。假设 C 在这两种情况下都必须以相同的方式工作。
另一个问题是:应用程序如何在除这两种设备之外的所有设备上完美运行?
有什么想法吗?我该如何解决这个问题?
编辑添加代码:
从 B 打开 C:
public void onItemClick(AdapterView<?> parent, View v, int position, long id) {
// TODO Auto-generated method stub
switch (position+1) {
case 1:
if(random == true){
AnimalsBD.cmpt = Integer.parseInt(ABD.getNAct(Integer.toString(Aguila.ordre)))+1;
}
Intent a = new Intent ("com.android.JIA.Animals.1");
startActivity(a);
break;
case 2:
if(random == true){
AnimalsBD.cmpt = Integer.parseInt(ABD.getNAct(Integer.toString(Anec.ordre)))+1;
}
Intent b = new Intent ("com.android.JIA.Animals.2");
startActivity(b);
break;
从 B2 打开 C:
public void onItemClick(AdapterView<?> parent, View v, int position, long id) {
// TODO Auto-generated method stub
mpCorrecte = MediaPlayer.create(this, R.raw.correcte);
mpIncorrecte = MediaPlayer.create(this, R.raw.incorrecte);
if(start){
switch (position+1) {
case 1:
if(numSo==1){
start = false;
mpCorrecte.start();
mpCorrecte.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
public void onCompletion(MediaPlayer mp) {
Intent a = new Intent ("com.android.JIA.Animals.1");
startActivity(a);}
});
}else{
mpIncorrecte.start();
}
break;
case 2:
if(numSo==2){
start = false;
mpCorrecte.start();
mpCorrecte.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
public void onCompletion(MediaPlayer mp) {
Intent a = new Intent ("com.android.JIA.Animals.2");
startActivity(a);}
});
}else{
mpIncorrecte.start();
}
break;
在这两种情况下,我都会从网格视图中打开最终活动。所有最后的活动都是一样的。
谢谢。
【问题讨论】:
-
你能发布你的代码如何调用不同的活动
-
我已经用我的代码编辑了条目。
-
您能否为您测试的设备提供准确的 Android 软件版本?我可以尝试在这些设备上运行类似的示例。
-
两个设备的android版本都是4.0.4,不过不用担心,问题已经解决了。还是谢谢你。
标签: android android-activity activity-finish