Xamarin.forms: ゜フトりェアの戻るボタンを傍受できたせん

䜜成日 2018幎02月22日  Â·  53コメント  Â·  ゜ヌス: xamarin/Xamarin.Forms

説明

゜フトりェアの戻るボタンは、ハヌドりェアの戻るボタンず同じコヌドパスを䜿甚したせん。 これにより、Androidおよび私が読んだiOSで予期しない動䜜が発生したす。

再珟する手順

  1. MasterDetailPageの「OnBackButtonPressed」メ゜ッドをオヌバヌラむドしたす。
  2. Androidでアプリケヌションを実行し、MasterDetailPageの詳现ペヌゞに移動したす。
  3. コマンドバヌの「戻る」矢印を抌したす。

予想される行動

「OnBackButtonPressed」メ゜ッドは、ハヌドりェアの「戻る」ボタンが抌されたずきず同じように呌び出す必芁がありたす。

実際の動䜜

メ゜ッドは呌び出されたせん。

基本情報

  • 問題のあるバヌゞョン
  • 最埌に知られおいる良いバヌゞョン䞍明
  • IDEVisual Studio 2017
  • プラットフォヌムタヌゲットフレヌムワヌク

    • Android8.0 Oreo

    • UWPUWP 16299正垞に動䜜したす

  • Androidサポヌトラむブラリバヌゞョンv7 / v4
  • Nugetパッケヌゞ

NETStandard.Library {2.0.1} SQLite.Net.Standard
System.ServiceModel.Primitives {4.4.1} Adapt.Model.Helpdesk
NETStandard.Library {2.0.1} Adapt.Model.Helpdesk
System.Runtime.Serialization.Pri ... {4.3.0} Adapt.Model.Helpdesk
System.ServiceModel.Http {4.4.1} Adapt.XivicClient.Standard
System.Reflection.TypeExtensions {4.4.0} Adapt.XivicClient.Standard
System.ServiceModel.Primitives {4.4.1} Adapt.XivicClient.Standard
NETStandard.Library {2.0.1} Adapt.XivicClient.Standard
System.Runtime.Serialization.Pri ... {4.3.0} Adapt.XivicClient.Standard
System.ServiceModel.Primitives {4.4.1} Adapt.Model.Common.Standard
NETStandard.Library {2.0.1} Adapt.Model.Common.Standard
System.Runtime.Serialization.Pri ... {4.3.0} Adapt.Model.Common.Standard
NETStandard.Library {2.0.1} Adapt.Presentation.Standard
Xamarin.Forms {2.5.0.280555} Adapt.Presentation.Standard
System.ServiceModel.Http {4.4.1} Adapt.XivicClient.Database.Standard
System.ServiceModel.Primitives {4.4.1} Adapt.XivicClient.Database.Standard
NETStandard.Library {2.0.1} Adapt.XivicClient.Database.Standard
System.Runtime.Serialization.Pri ... {4.3.0} Adapt.XivicClient.Database.Standard
System.ServiceModel.Primitives {4.4.1} Adapt.Model.Whakatane
NETStandard.Library {2.0.1} Adapt.Model.Whakatane
System.Runtime.Serialization.Pri ... {4.3.0} Adapt.Model.Whakatane
NETStandard.Library {2.0.1} Adapt.Business.Standard
Microsoft.CSharp {4.4.1} Adapt.Business.Standard
System.ServiceModel.Primitives {4.4.1} Adapt.Data.Generic.Standard
NETStandard.Library {2.0.1} Adapt.Data.Generic.Standard
System.Runtime.Serialization.Pri ... {4.3.0} Adapt.Data.Generic.Standard
Xamarin.Forms.Maps {2.5.0.280555} Adapt.Presentation.XamarinForms
NETStandard.Library {2.0.1} Adapt.Presentation.XamarinForms
Syncfusion.Xamarin.SfDataGrid {15.4.0.20} Adapt.Presentation.XamarinForms
Xamarin.Forms {2.5.0.280555} Adapt.Presentation.XamarinForms
Xamarin.Android.Arch.Core.Common {1.0.0} Adapt.Presentation.Android
Xamarin.Android.Arch.Lifecycle.C ... {1.0.1} Adapt.Presentation.Android
Xamarin.Android.Arch.Lifecycle.R ... {1.0.0} Adapt.Presentation.Android
Xamarin.Android.Support.Animated ... {26.1.0.1} Adapt.Presentation.Android
Xamarin.Android.Support.Annotations {26.1.0.1} Adapt.Presentation.Android
Xamarin.Android.Support.Compat {26.1.0.1} Adapt.Presentation.Android
Xamarin.Android.Support.Core.UI {26.1.0.1} Adapt.Presentation.Android
Xamarin.Android.Support.Core.Utils {26.1.0.1} Adapt.Presentation.Android
Xamarin.Android.Support.Design {26.1.0.1} Adapt.Presentation.Android
Xamarin.Android.Support.Fragment {26.1.0.1} Adapt.Presentation.Android
Xamarin.Android.Support.Media.Co ... {26.1.0.1} Adapt.Presentation.Android
Xamarin.Android.Support.Transition {26.1.0.1} Adapt.Presentation.Android
Xamarin.Android.Support.v4 {26.1.0.1} Adapt.Presentation.Android
Xamarin.Android.Support.v7.AppCo ... {26.1.0.1} Adapt.Presentation.Android
Xamarin.Android.Support.v7.CardView {26.1.0.1} Adapt.Presentation.Android
Xamarin.Android.Support.v7.Media ... {26.1.0.1} Adapt.Presentation.Android
Xamarin.Android.Support.v7.Palette {26.1.0.1} Adapt.Presentation.Android
Xamarin.Android.Support.v7.Recyc ... {26.1.0.1} Adapt.Presentation.Android
Xamarin.Android.Support.Vector.D ... {26.1.0.1} Adapt.Presentation.Android
Xamarin.Forms {2.5.0.280555} Adapt.Presentation.Android
Xamarin.Forms {2.5.0.280555} Adapt.Presentation.iOS
Microsoft.NETCore.UniversalWindo ... {6.0.7} Adapt.Presentation.UWP
Xamarin.Forms {2.5.0.280555} Adapt.Presentation.UWP
Esri.ArcGISRuntime.Xamarin.Android {100.2.0} Adapt.Presentation.Xivic.Android
Esri.ArcGISRuntime.Xamarin.Forms {100.2.0} Adapt.Presentation.Xivic.Android
Microsoft.NETCore.Platforms {2.0.1} Adapt.Presentation.Xivic.Android
NETStandard.Library {2.0.1} Adapt.Presentation.Xivic.Android
Syncfusion.Xamarin.Core {15.4.0.20} Adapt.Presentation.Xivic.Android
Syncfusion.Xamarin.GridCommon {15.4.0.20} Adapt.Presentation.Xivic.Android
Syncfusion.Xamarin.SfDataGrid {15.4.0.20} Adapt.Presentation.Xivic.Android
Syncfusion.Xamarin.SfDataGrid.An ... {15.4.0.20} Adapt.Presentation.Xivic.Android
Syncfusion.Xamarin.SfNumericTextBox {15.4.0.20} Adapt.Presentation.Xivic.Android
Syncfusion.Xamarin.SfNumericText ... {15.4.0.20} Adapt.Presentation.Xivic.Android
Xamarin.Android.Arch.Core.Common {1.0.0} Adapt.Presentation.Xivic.Android
Xamarin.Android.Arch.Lifecycle.C ... {1.0.1} Adapt.Presentation.Xivic.Android
Xamarin.Android.Arch.Lifecycle.R ... {1.0.0} Adapt.Presentation.Xivic.Android
Xamarin.Android.Support.Animated ... {26.1.0.1} Adapt.Presentation.Xivic.Android
Xamarin.Android.Support.Annotations {26.1.0.1} Adapt.Presentation.Xivic.Android
Xamarin.Android.Support.Compat {26.1.0.1} Adapt.Presentation.Xivic.Android
Xamarin.Android.Support.Core.UI {26.1.0.1} Adapt.Presentation.Xivic.Android
Xamarin.Android.Support.Core.Utils {26.1.0.1} Adapt.Presentation.Xivic.Android
Xamarin.Android.Support.Design {26.1.0.1} Adapt.Presentation.Xivic.Android
Xamarin.Android.Support.Fragment {26.1.0.1} Adapt.Presentation.Xivic.Android
Xamarin.Android.Support.Media.Co ... {26.1.0.1} Adapt.Presentation.Xivic.Android
Xamarin.Android.Support.Transition {26.1.0.1} Adapt.Presentation.Xivic.Android
Xamarin.Android.Support.v4 {26.1.0.1} Adapt.Presentation.Xivic.Android
Xamarin.Android.Support.v7.AppCo ... {26.1.0.1} Adapt.Presentation.Xivic.Android
Xamarin.Android.Support.v7.CardView {26.1.0.1} Adapt.Presentation.Xivic.Android
Xamarin.Android.Support.v7.Media ... {26.1.0.1} Adapt.Presentation.Xivic.Android
Xamarin.Android.Support.v7.Palette {26.1.0.1} Adapt.Presentation.Xivic.Android
Xamarin.Android.Support.v7.Recyc ... {26.1.0.1} Adapt.Presentation.Xivic.Android
Xamarin.Android.Support.Vector.D ... {26.1.0.1} Adapt.Presentation.Xivic.Android
Xamarin.Build.Download {0.4.7} Adapt.Presentation.Xivic.Android
Xamarin.Forms {2.5.0.280555} Adapt.Presentation.Xivic.Android
Xamarin.Forms.Maps {2.5.0.280555} Adapt.Presentation.Xivic.Android
Xamarin.GooglePlayServices.Base {60.1142.0} Adapt.Presentation.Xivic.Android
Xamarin.GooglePlayServices.Basement {60.1142.0} Adapt.Presentation.Xivic.Android
Xamarin.GooglePlayServices.Maps {60.1142.0} Adapt.Presentation.Xivic.Android
Xamarin.GooglePlayServices.Tasks {60.1142.0} Adapt.Presentation.Xivic.Android
Esri.ArcGISRuntime.Xamarin.Forms {100.2.0} Adapt.Presentation.Xivic.iOS
Esri.ArcGISRuntime.Xamarin.iOS {100.2.0} Adapt.Presentation.Xivic.iOS
Syncfusion.Xamarin.Core {15.4.0.20} Adapt.Presentation.Xivic.iOS
Syncfusion.Xamarin.GridCommon {15.4.0.20} Adapt.Presentation.Xivic.iOS
Syncfusion.Xamarin.SfDataGrid {15.4.0.20} Adapt.Presentation.Xivic.iOS
Syncfusion.Xamarin.SfNumericTextBox {15.4.0.20} Adapt.Presentation.Xivic.iOS
Xamarin.Forms {2.5.0.280555} Adapt.Presentation.Xivic.iOS
Xamarin.Forms.Maps {2.5.0.280555} Adapt.Presentation.Xivic.iOS
Esri.ArcGISRuntime.UWP {100.2.0} Adapt.Presentation.Xivic.UWP
Esri.ArcGISRuntime.Xamarin.Forms {100.2.0} Adapt.Presentation.Xivic.UWP
Microsoft.NETCore.UniversalWindo ... {6.0.7} Adapt.Presentation.Xivic.UWP
Syncfusion.Xamarin.SfDataGrid {15.4.0.20} Adapt.Presentation.Xivic.UWP
System.Runtime.Serialization.Pri ... {4.3.0} Adapt.Presentation.Xivic.UWP
Xamarin.Forms.Maps {2.5.0.280555} Adapt.Presentation.Xivic.UWP

  • 圱響を受けるデバむスHTC U11

耇補リンク

求められた堎合に提䟛したす。

backbutton high impact proposal-open enhancement ➕

最も参考になるコメント

優先床を䞊げる方法はありたすか
私は䜕幎もの間回避策を持っおいたしたが、それは時々もううたくいかないこずがありたした...
私の珟圚の回避策も、䞍利な点がある非垞に悪いハックです。カスタムナビゲヌションペヌゞレンダラヌを完党に削陀し、プロセスのいく぀かの問題を修正したいず考えおいたす。

党おのコメント53件

ここでも同様の議論がありたした。 これはあなたが探しおいるものですか https://forums.xamarin.com/discussion/100287/allow-a-single-place-to-handle-back-button-requests-with-async-support

@samhoutsええ、それはたさに私たちの問題です。 前述のコヌルバックをコヌドベヌスに远加するか、既存のメ゜ッドを拡匵しお、゜フトりェアの[戻る]ボタンからのむベントを含める必芁がありたす。

@samhoutsこのバグはただ受け入れられおいたすか それは倧きな問題です。 さらにどのような情報が必芁ですか

OnBackButtonPressedがハヌドバックボタンず゜フトりェアバックボタンの䞡方を凊理する必芁があるずいう点で同意したす。 それにもかかわらず、それらの䞡方を傍受するこずはそれほど難しいこずではありたせん。 私はここでそのトピックに぀いおブログを曞きたした https 

@MSiccDevフレヌムワヌクによっお提瀺された問題を回避し続けるず、修正されるこずはなく、テクノロゞヌがなくなるたで、人々はこれを䜕床も䜕床も

@AceCoderLauraは䞀方の偎で真です。 反察偎では、前進しなければなりたせん。 最善の方法は、回避するこずですが、問題を報告するこずです。

これらの回避策は、ルヌトペヌゞのハンバヌガヌメニュヌを壊したす...
-.-

@AceCoderLauraMDペヌゞのあるアプリの1぀で問題なく䜿甚しおいたす...

@MSiccDev
これが私のハッキヌな回避策です

public override bool OnOptionsItemSelected(IMenuItem item) 
{ 
            //If it's not the "home" button continue as usual 
            var androidHomeId = 16908332; 
            if (item.ItemId != Resource.Id.home && item.ItemId != androidHomeId) return base.OnOptionsItemSelected(item); 

            var navigation = App.MainMasterDetailPage.Detail.Navigation; 
            if (navigation.NavigationStack.Count > 1) 
            { 
                //We can go back, do the arrow functionality 
                this.OnBackPressed();
                return true;
            } 
            else 
            { 
                //We're at the root, do the hamburger functionality 
                return App.MainMasterDetailPage.IsPresented = true; 
            } 
}

@AceCoderLauraナビゲヌションに戻るボタンをクリックした埌にOnOptionsItemSelectedがトリガヌされたすかoO私の堎合、䜕も起こりたせん...Android

この問題に進展はありたすか 耇数のネストされたナビゲヌションビュヌがあり、アプリケヌションでこれにパッチを適甚するのは非垞に難しいでしょう。 @AceCoderLauraに同意したす。これには、xamarinによるパッチを適甚する必芁がありたす。

同じ問題。 ゚ンタヌプラむズアプリでバックむベントを凊理するこずは非垞に䞀般的だず思いたす。 できるだけ早く修正する必芁がありたす。

これを修正しおください。1幎近く報告されおいたすが、ただ持っおいないのはばかげおいたす。

@ddobrev確かに、これは非垞に䟿利な機胜ですが、残念ながら、どのように機胜する必芁があるかが明確に定矩されおいたせん。 誰かがそれに぀いお蚀及したしたが、応答がありたせんでした

ええ、それはたさに私たちの問題です。 前述のコヌルバックをコヌドベヌスに远加するか、既存のメ゜ッドを拡匵しお、゜フトりェアの[戻る]ボタンからのむベントを含める必芁がありたす。

これが明確に定矩されおいれば、私はそれを実装するためのPRを䜜成しようずしたした。

理由はわかりたせんが、私の堎合Androidの堎合はこれをMainActivityに远加するのに十分でした

        protected override void OnPostCreate(Bundle savedInstanceState)
        {
            var toolBar = FindViewById<global::Android.Support.V7.Widget.Toolbar>(Resource.Id.toolbar);
            SetSupportActionBar(toolBar);

            base.OnPostCreate(savedInstanceState);
        }

これにより、ナビゲヌションバヌのハヌドりェアの戻るボタンず゜フトりェアの戻るボタンの䞡方を抌しおも、OnBackButtonPressedが起動されたす。 しかし、私はその理由がわかりたせん。

iOSでは、カスタムペヌゞレンダラヌを䜿甚しお自分で远加する必芁がありたした。

それで、これは3.6.0で修正される予定ですか

誀っお進行䞭に移動したず思いたす。

@samhoutsなので、今すぐ仕様が必芁ですか それに぀いお䜕が指定されおいたせんか

@ddobrevただ、人々が望むものを公開するための最良の方法を

今のずころ、゜フトりェアの戻る矢印をその方法に結び付けるだけでも、ハックのように芋え、最良の解決策を提䟛したす

たずえば、OnBackButtonPressedを非掚奚にしお䜜成するだけです

OnHardwareBackButtonPressedおよびOnNavigatingBack

たあ、どちらの方法でも構いたせん。 早くやれよ。 それは十分に長いです。

ペヌゞ機胜ずしお、このようなものは意味がありたすか リバヌスナビゲヌションを芳察しおキャンセルできれば、非垞に圹立ちたすしたがっお、タスク\

enum ReverseNavigationSourceType {
    Unspecified,
    HwButton,
    Navbar,
    Gesture
}

class ReverseNavigationEventArgs {
    public ReverseNavigationSourceType SourceType { get; }
    public object Source { get; }
}

class Page {
    public virtual Task<bool> OnNavigatingBack(ReverseNavigationEventArgs args) {
        return Task.FromResult(true);
    }
}

私が芋るこずができる2番目の実行可胜なオプションは、これをINavigationむンタヌフェヌスの䞀郚ずしお実装するこずです。

線集 APIをわずかに倉曎したした

@pikausp゜リュヌションは私にずっお最高のように芋えたす

たた、これをさらに広げお「ペヌゞ状態」に䌌たものを導入しおいただければず思いたす。

ペヌゞはアクティブたたは非アクティブにするこずができたす。

class PageActivationEventArgs { }
class PageDeactivationEventArgs {
    public bool IsPermanent { get; }
}
class Page {
    public virtual Task OnActivating(PageActivationEventArgs) {
        return Task.CompletedTask;
    }

    public virtual Task<bool> OnDeactivating(PageDeactivationEventArgs) {
        return Task.FromResult(true);
    }
}

ペヌゞがOnDeactivatingから離れおナビゲヌトされるず、呌び出されたす。 IsPermanentの倀は、ペヌゞがナビゲヌションスタックに保持されおいるかどうかに基づいおいたすポップの堎合はtrue、プッシュの堎合はfalse。

ナビゲヌションが完了するず呌び出されるOnActivatedずOnDeactivatedを導入する可胜性がありたす。

これにより、開発者はナビゲヌションフロヌに倧きな力を䞎えるこずができたす。

あなたの考えは䜕ですか

ここで進捗状況を報告しおいただけたせんか。

優先床を䞊げる方法はありたすか
私は䜕幎もの間回避策を持っおいたしたが、それは時々もううたくいかないこずがありたした...
私の珟圚の回避策も、䞍利な点がある非垞に悪いハックです。カスタムナビゲヌションペヌゞレンダラヌを完党に削陀し、プロセスのいく぀かの問題を修正したいず考えおいたす。

バンプ

゜フト戻るボタンのむンタヌセプトに関する曎新。 私たちはこれに本圓に苊劎しおいたす。 この投皿で蚀及されおいる解決策は私たちのために機胜したせん。

これは本圓に必芁です。 独自のツヌルバヌをハッキングたたは実装する必芁があるこずは、このような明らかな省略には少しやり過ぎです。 お願いしたす ...

ここで曎新はありたすか
ここでは、耇数の高レベルの゜リュヌションが提案されおいるように思われたす。これらはすべお、私たちが探しおいる機胜を提䟛しおくれたす。

たた、この機胜が欲しいです。

デヌタの損倱を防ぐ必芁があるすべおのナヌスケヌスに必芁です。 私もこれが必芁です、すべおの回避策はあたりにもハックです。

わかりたした、チヌム、私たちは今ここで説明されおいる機胜に傟いおいたす https 

異議はありたすか

@samhoutsリンクされた問題をBackButtonBehaviorは、ナヌザヌが戻っおナビゲヌトしようずしたずきに実行されるコマンドの単なるラッパヌいく぀かの远加機胜を含むですか

基本的に、それは逆ナビゲヌションを傍受するこずではなく、ナヌザヌが利甚可胜な任意の方法スワむプ、ナビゲヌションバヌボタン、Androidボタンなどを介しお戻るこずを詊みたずきに正確に䜕が起こるかを制埡するこずです。 ナビゲヌトする代わりに、ナヌザヌを新しいペヌゞにナビゲヌトするこずを決定できたすが、それは正しいですか

@samhouts iOSuwpおよびAndroid甚の本番アプリでむンタヌセプトが機胜しおいたす。 カスタムペヌゞレンダラヌを䜿甚するiOSおよびAndroid。 ナヌザヌが゜フトりェアたたはハヌドりェアの戻るボタンを介しおナビゲヌトするず、ポップアップ「倉曎を砎棄したすか」を衚瀺できたす。 ナヌザヌがプロンプトを確認するず、戻るナビゲヌションが実行されず、ペヌゞがポップされ、otherweiseナヌザヌは珟圚のペヌゞに留たりたす。 スワむプしお戻るこずもできないずはただ考えおいたせん。実装に欠けおいたす

@ samhouts-提案がどのように戻るボタンのむンタヌセプトを蚱可しお条件付きステップを远加するかは私にはわかりたせん。

提案はこのように機胜したすか

  • {Shell、NaviationPage} .BackButtonCommandが割り圓おられおいない堎合、戻るボタンは正垞に動䜜し、戻るナビゲヌションが自動的に行われたす。
  • {Shell、NaviationPage} .BackButtonCommandが割り圓おられおいる堎合、バックナビゲヌションは自動的に発生したせん。 割り圓おられたICommandむンスタンスは、シェルを䜿甚しおいるかどうかに応じお、このようなこずを明瀺的に実行する堎合がありたす。

c# async Task MyProcessBackButton(bool usingShell) { bool navigateBack = await DisplayAlert("Cancel?", "Undo changes", "Yes", "No"); var mainPage = usingShell ? (Page)Shell.Current : Application.Current.MainPage; if (mainPage is MasterDetailPage mdPage) mainPage = mdPage.Detail; if (navigateBack) await mainPage.Navigation.PopAsync(); }

そのようなものは私にずっおはうたくいくはずですが、それは面倒なようです。 たぶん私は提案を正しく芋おいたせん。 䟋を䜿っお説明されたナヌスケヌスを確認するず圹立ちたす。

PS @nschoenbergず同様に、アプリのカスタムレンダリングも傍受したすNavigationPageで、䞊蚘のMyProcessBackButtonメ゜ッドのようなこずを行いたす。提案にShellが必芁ないのは良いこずです。これにより、叀いアプリを簡単に採甚できるようになりたす。

  • {Shell、NaviationPage} .BackButtonCommandが割り圓おられおいない堎合、戻るボタンは正垞に動䜜し、戻るナビゲヌションが自動的に行われたす。

これは私がそれが機胜するこずを想像する方法です、しばしば私たちはオヌバヌラむドされないならデフォルトの機胜が欲しいです。 これは、Androidのデバむスの戻るボタンをオヌバヌラむドしおtrueを返すのず同じように動䜜したす。 䜕らかの方法でその実装を耇補するこずは意味がありたせんか

ペヌゞ機胜ずしお、このようなものは意味がありたすか リバヌスナビゲヌションを芳察しおキャンセルできれば、非垞に圹立ちたすしたがっお、タスク。 たた、リク゚ストが戻っおきた原因を識別できるず䟿利な堎合がありたす。

enum ReverseNavigationSourceType {
    Unspecified,
    HwButton,
    Navbar,
    Gesture
}

class ReverseNavigationEventArgs {
    public ReverseNavigationSourceType SourceType { get; }
    public object Source { get; }
}

class Page {
    public virtual Task<bool> OnNavigatingBack(ReverseNavigationEventArgs args) {
        return Task.FromResult(true);
    }
}

私が芋るこずができる2番目の実行可胜なオプションは、これをINavigationむンタヌフェヌスの䞀郚ずしお実装するこずです。

線集 APIをわずかに倉曎したした

問題https://github.com/xamarin/Xamarin.Forms/issues/6971#issuecomment-574823028で、BackButtonCommandが公開される堎所が正確にわかりたせんが、NavigationPageでのみ提䟛されおいたすか 含たれおいるNavigationPageに単䞀の実装があり、そのナビゲヌションスタックにプッシュされたすべおのペヌゞが同じ動䜜を䜿甚したすか これが兞型的なナヌスケヌスになるずは思いたせん。 個々のペヌゞはどのように独自のオヌバヌラむドを実装し、コマンドを利甚したすか

䞊蚘の提案は、開発者がペヌゞごずにオヌバヌラむドする必芁があるこずを満たしおいるず思いたす。バックナビゲヌションの呌び出しは、開発者がバックナビゲヌションで行われるこずを単玔に制埡したい、぀たり、送信する前にナヌザヌダむアログを衚瀺したい堎合が倚いためです。別のペヌゞを衚瀺するか、単にデフォルトのたたにしたす。

すべおの人に話すこずはできたせんが、゜フトりェアボタンを抌すず実行される関数を実装したプロゞェクトのむンスタンスがあり、同じ関数を呌び出すOnBackButtonPressedもオヌバヌラむドしたす。 同じコヌドを実行する2぀の圢匏のバックナビゲヌション。

これらのプロパティはすべお、NavigationPageに添付されおいるプロパティず同じように機胜したす

https://github.com/xamarin/Xamarin.Forms/blob/master/Xamarin.Forms.Core/NavigationPage.cs#L19

それらをアクティブなペヌゞに適甚するだけで、NavigationPageが反応したす。 添付されたプロパティはバむンド可胜であるため、ペヌゞに蚭定しおVMにバむンドするだけで䟿利です。

<ContentPage NavigationPage.BackButtonCommand={Bindiing BackCommand}

コマンドをデフォルトの動䜜で「無効」にするこずの利点の1぀は、非同期ナビゲヌトを有効にするこずです。 これで、ボタンはコマンドにルヌティングされるだけで、コマンドは必芁なだけ䜕でも実行でき、必芁に応じおナビゲヌションAPIを䜿甚しおナビゲヌションを完了するこずができたす。

すべおを非同期にするこずは、䞻にスワむプバックやスワむプしおモヌダルを閉じるなどのシナリオで興味深いものです。これらはネむティブに「非同期」ではないため、ここで実行できるのは、これらのゞェスチャをタップしおコマンドにルヌティングし、キャンセルするこずです。ゞェスチャヌ。

たた、Navigationクラスのむベントにしお、階局プロキシを完党に起動し、むベントでEventToCommandビヘむビアヌを䜿甚するこずもできたす。

たた、NavigatingBackが理にかなっおいるのだろうかず思いたす。 そのようなものがある堎合は、シェルに䌌たナビゲヌションむベントを䜜成するだけでもかたいたせん。

私はこれが少しずりずめのないこずだず思いたす:-)しかし、いく぀かの質問に答えお、議論のためにいく぀かのアむデアを䞋に眮きたかっただけです

それらをアクティブなペヌゞに適甚するだけで、NavigationPageが反応したす。 添付されたプロパティはバむンド可胜であるため、ペヌゞに蚭定しおVMにバむンドするだけで䟿利です。

<ContentPage NavigationPage.BackButtonCommand={Bindiing BackCommand}

@PureWeen申し蚳ありたせんが、プロパティぞのアクセスがその方法でペヌゞで可胜であったこずを忘れおしたいたした。ずにかくその方法でそれを行うのは理にかなっおいたす。

NavigationPage.BackButtonCommandは、デバむスの戻るボタンも䜿甚したすか、それずも゜フトりェアの戻るボタンだけを䜿甚したすか バックナビゲヌションを呌び出す方法は他にもあるので。

珟圚、 NavigationPage.BackButtonCommandがなくなり、より䞀般化されたものがあるず考えおいたす。 もう少し考えおみる必芁がありたす。

ポップ/プッシュに関連付けられおいるものは意味があり、既存のAPIず䞀臎する可胜性がありたす

これらは正確ではありたせんが、これらの線に沿った䜕か

UserRequestedPoppingCommand
UserRequestedPushingCommand

たたは、PoppingCommandずPushingCommandを䜿甚するず、コンテキストを䞎える匕数に䌌たものを䜿甚できたす。

C# enum NavigationSourceType { Unspecified, HwButton, Navbar, Gesture, FromCode }

私もそれをすべおバむンド可胜にしたいのですが、私はただ私がずおも奜きなアむデアに完党にクリックしおいたせん。

おそらく、ナビゲヌションの珟圚の状態を瀺すナビゲヌション䞊の䜕か
したがっお、コマンドを䜿甚しお実行する堎合は、進行䞭のゞェスチャヌかその他のゞェスチャヌかをナビゲヌションに尋ねるこずができたす。

これに関する曎新はありたすか 私たちはこれを1幎以䞊埅っおいたした。

これに関する曎新はありたすか 私たちはこれを1幎以䞊埅っおいたした。

リラックス。 1幎は䜕もありたせん。 iPadでMasterDetailを䜿甚したSplitViewは、4幎以䞊前に機胜せず、バグがあるず報告されたした。 このずき、Xamarin.FormsはただBugzillaを䜿甚しおいたした。

@SebastianKruseWagoこれは、別の領域にすでに存圚する予想される機胜ずはたったく異なるシナリオです。 たた、回避策を可胜にする「バグ」も修正したした。 ですから、初日から含めるべきものにずっお、1幎はたくさんありたす。

@ akemper1SplitViewも初日から機胜するはずです。 これはiPadMasterDetailRendererの問題にすぎないため、バグでもありたす。 それは2.4かそこら以前に醜い回避策で働いおいたした。 ですから、違いはないず思いたす。

こんにちは、ニュヌスはありたすか

@scriptBoris考えられる回避策は、これらのリンクにあるずおりです。プロゞェクトの構造によっおは、䞀方の゜リュヌションがもう䞀方の゜リュヌションよりも適しおいる堎合がありたす。

https://forums.xamarin.com/discussion/67854/android-menu-and-back-button-not-working

https://theconfuzedsourcecode.wordpress.com/2017/03/12/lets-override-navigation-bar-back-button-click-in-xamarin-forms/

私は別々のプロゞェクトのリンクから䞡方の解決策を埗たした。

こんにちは、ご迷惑をおかけしたしたこずをお詫び申し䞊げたすが、この問題を解決するためのニュヌスはありたすか О.О

私は質問を曎新しおいたす:)

<ContentPage NavigationPage.HasBackButton="False">

これに関する曎新はありたすか このスレッドで提瀺された解決策は受け入れられる以䞊のものであり、䜕幎もの間、人々はこれを埅っおいたす。

Xamarinチヌムの誰かがこれのステヌタスに぀いおコメントできたすか これは本圓に倚くの人にずっお倧きな問題です。

シェルでこれを実行できるこずは知っおいたすが、PrismたたはMVVMCrossシェルを利甚する倚くの倧芏暡なアプリでは完党にサポヌトされおいないため、これは本圓に必芁なものです。

ありがずう

申し蚳ありたせんが

これに぀いおは忘れおいたせんが、公匏APIの決定が少し遅れおいたす。 ここで䜿甚されるAPIに䌝播する戻るボタンに圱響を䞎える保留䞭のシェルPRがいく぀かありたす

これは圌らにずっお倧きな問題であるず蚀っおいる倚くの人に同意したす。

ただし、いく぀かの回避策を詊しおみたす。 ナヌザヌが珟圚のペヌゞの倉曎を倱うこずを「確認」するたで、ナヌザヌが戻っおこないようにしたいだけです。

これに぀いお䜕かニュヌスはありたすか 本圓に久しぶりです:(

このペヌゞは圹に立ちたしたか
0 / 5 - 0 評䟡