0

次のことを行うアプリを作成しました。

アクティビティ A --> アクティビティ B --> アクティビティ C

アクティビティ A --> アクティビティ B2 --> アクティビティ C

B、B2、または C を閉じると、前のアクティビティに移動します。A を閉じると、アプリを終了します。

B から C に到着した場合、C は 1 つの方法で機能しますが、B2 から到着した場合、C は少し異なる方法で機能します。

これは、エミュレーターと私が確認できたすべてのデバイスで完全に機能しますが、android 4.0.4 を搭載した 2 つの Xperia (モデル ARC と U) で問題が発生しました。

B から C に到達すると問題が発生します。C を閉じると、B ではなく A に戻ります。B2 から C に到達すると、閉じると B2 に戻ります。

私はそれを理解できません。どちらの場合も、C は同じように動作しなければならなかったと思われます。

もう 1 つの質問は、この 2 つ以外のすべてのデバイスでアプリが完全に機能することはどのように可能でしょうか?

何か案が?どうすればこの問題を解決できますか?

コードを追加するための編集:

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;

どちらの場合も、グリッドビューから最終的なアクティビティを開いています。すべての最終的なアクティビティは同じように機能します。

ありがとうございました。

4

2 に答える 2

1

最後に、私は問題を解決することができました。

次のようなOnDestroy()メソッドでfinish()が失われました。

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

ご協力ありがとうございました。

ここで問題となるのは、このfinish()がこれら2つのモデル以外のデバイスで何もしなかったのはなぜですか?

未解決のミステリー...

于 2013-03-12T00:38:42.537 に答える
0

このコードを使用して、新しいアクティビティを開きます。

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

交換CurrentActivityしてOpeningActivity

この2つを除くすべてのデバイスでアプリが完全に機能する可能性はありますか?
異なるプラットフォーム、異なる画面サイズ、異なる仕様などの異なるタイプの電話を選択して、手動で確認する必要があります。

于 2013-03-07T12:16:20.793 に答える