簡體   English   中英

將后退按鈕導航到另一個活動Xamarin C#

[英]Navigate the back button to another activity Xamarin C#

所以我試圖使后退按鈕從一個活動導航到另一個活動(假設我想讓activity1,activity2,activity3導航到mainActivity(級別選擇)),因為此刻它僅導航回到自身,然后像關閉應用程序一樣所以 在此處輸入圖片說明

我嘗試將“ NoHistory = true”添加到
[Activity(Label = "firstQ", NoHistory =true)]
但這根本沒有做任何事情,關於什么可以解決這個問題的任何想法?

NoHistory=true屬性標志實際上用於操作欄上的“向上”按鈕。 有關更多信息,請參見此處。

您想要做的是覆蓋后退按鈕的行為。 您在這里可以做的是

Activitiy1:

public override void OnBackPressed()
{
    var intent = new Intent(this, typeof(MainActivity));
    StartActivity(intent);

    //base.OnBackPressed(); -> DO NOT CALL THIS LINE OR WILL NAVIGATE BACK
}

一旦在前台活動上按下后退按鈕,就會觸發此方法。 通過注釋掉(或不調用) base.OnBackPressed(); 將阻止該活動返回,您可以啟動新活動,即MainActivity

現在,如果您的層次結構實際上不同於您所說的, MainActivity本質上是您的root活動,並且您是按順序啟動其他活動的,則按后退按鈕可將您返回到Main活動,您可以采用類似的方法,但是將需要一些其他標志。 對於此實例,您可能對FLAG_ACTIVITY_CLEAR_TOP或Xamarin術語ActivityFlags.ClearTop感興趣。

如果已設置,並且正在啟動的活動已經在當前任務中運行,那么與其啟動該活動的新實例,不如關閉該活動之上的所有其他活動,並將此Intent傳遞給(現在頂部)將舊活動作為新的Intent。

例如,考慮一個由以下活動組成的任務:A,B,C,D。如果D調用具有解析為活動B組件的Intent的startActivity(),則C和D將完成,並且B接收給定的Intent ,導致堆棧現在為:A,B。

現在,實現與添加的意圖標志幾乎相同。

public override void OnBackPressed()
{
    var intent = new Intent(this, typeof(MainActivity));
    intent.AddFlags(ActivityFlags.ClearTop);
    StartActivity(intent);
    //base.OnBackPressed(); -> DO NOT CALL THIS LINE OR WILL NAVIGATE BACK
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM