2013-04-30 72 views
0

我是新來的Android開發人員。我按下後退按鈕時遇到問題。Android中的後退按鈕導航

如果我使用完成特定視圖被破壞。下次按下後退按鈕,應用程序結束。 我需要與後退按鈕

控制的導航例如這是我的活動A,B,C,d

我的流量應

從活動A到B到C到d至A

和用戶可以d之間導航到一個

,但是當他的用戶從d導航到

再次按下後退按鈕

它不應該導航到任何其他活動

請幫

回答

0

我想要一個活動保持其背部按下狀態剛剛開始之前不調用完成()方法其他活動。 Android將照顧採取以前的活動時,你會按後退按鈕,因爲沒有在清單文件中沒有條目android:noHistory="true"

0

你的一個活動就覆蓋

@Override 
    public void onBackPressed() { 
     super.onBackPressed();//comment this if you want to implement your own logic 
     //Do whatever you like 
    } 

,並開始d活動。

0

在d覆蓋onBackPress

@Override 
public void onBackPressed() 
{ 
    super.onBackPressed(); 
    Intent i = new Intent(this, A.class); 
    i.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
    startActivity(i); 
} 
1

要從D.所以導航到活動A,你可以從d如下調用活動A,

Intent intent = new Intent(this, A.class); 
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); //clears B and C from stack. 
startActivity(intent); 
0

試試這個 只需鍵入此在活動A相同,沒什麼可改變

@Override public void onBackPressed(){

} 
0

無論何時從其他活動調用活動,調用活動都會根據活動生命週期進入堆棧。當你從A移到B時,A被存入堆棧,B被打開。你想按(A到B到C到D到A),(D到A或反之),但不是從B到A或C到B或D到C或A到D。

當你從B調用活動C時,也調用finish()來銷燬B,同樣,當你從C調用D來銷燬C時,也就是說你不能後退。這會限制你的流量。

類A延伸活動{

//按鈕點擊

Intent intent=new Intent(A.this,B.class); 
startactivity(intent); 

}

類B擴展活動{

//按鈕點擊

Intent intent=new Intent(B.this,C.class); 
startactivity(intent); 
finish(); 

}

C類延伸活動{

//按鈕點擊

Intent intent=new Intent(C.this,D.class); 
startactivity(intent); 
finish(); 

}

類d延伸活動{

//按鈕點擊

Intent intent=new Intent(D.this,A.class); 
startactivity(intent); 

}

以這種方式,當你從A到B - > A存儲在堆棧中時,B到C - > B被銷燬(使用完成),C到D - > C被銷燬,並且你可以去使用後退按鈕直接從D到A.如果從D到A之後再次按下後退按鈕,它會到達D,然後再次按下它會到達A(首先啓動的活動),然後再次按下後,應用程序將結束。