0

我制作了一个执行以下操作的应用程序:

活动 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;

在这两种情况下,我都会从 gridview 打开最终活动。所有最后的活动都是平等的。

谢谢你。

4

2 回答 2

1

最后,我已经可以解决问题了。

在 OnDestroy() 方法中有一个 finish() 丢失,如下所示:

@Override
protected void onDestroy() {
    // TODO Auto-generated method stub
    super.onDestroy();
    ABD.erase();
            finish();
}   

感谢您的帮助。

现在的问题是:为什么除了这两个模型之外,finish() 在任何设备上都没有做任何事情?

未解之谜...

于 2013-03-12T00:38:42.537 回答
0

使用此代码打开新活动。

        Intent i = new Intent(CurrentActivity.this,
            OpeningActivity.class);
    startActivity(i);

更换CurrentActivityOpeningActivity

该应用程序如何在除这两个设备之外的所有设备上完美运行?
您必须通过选择不同类型的手机(例如不同的平台、不同的屏幕尺寸和不同的规格)来手动检查它。

于 2013-03-07T12:16:20.793 回答