次のことを行うアプリを作成しました。
アクティビティ 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;
どちらの場合も、グリッドビューから最終的なアクティビティを開いています。すべての最終的なアクティビティは同じように機能します。
ありがとうございました。