私は、スプラッシュスクリーン、ログインページ、およびダッシュボードがあるXamarin Forms Portableプロジェクトに取り組んでいます。Xamarin FormsポータブルWindowsアプリケーションがナビゲートしない
私は正しくアプリケーションにログインする場合、私はユーザーをSqliteデータベースに保存しています。
ログインしようとするとユーザーがデータベースに保存されると、ダッシュボード(マスター - 詳細ページ)に直接移動する必要があります。
Androidでは正しく動作していますが、Windowsでは動作しません。
public class SplashScreen : ContentPage
{
public SplashScreen()
{
this.Padding = new Thickness(20, Device.OnPlatform<double>(40, 20, 20), 20, 20);
StackLayout panel = new StackLayout
{
VerticalOptions = LayoutOptions.FillAndExpand,
HorizontalOptions = LayoutOptions.FillAndExpand,
Orientation = StackOrientation.Vertical,
Spacing = 15,
};
panel.Children.Add(new Image
{
Aspect = Aspect.AspectFit,
Source = Device.OnPlatform(
iOS: ImageSource.FromFile("Resources/login.png"),
Android: ImageSource.FromFile("login.png"),
WinPhone: ImageSource.FromFile("Assets/login.png"))
}
);
panel.Children.Add(new Label
{
Text = "Splash",
});
this.Content = panel;
loguearseSiSePuede();
}
private async void loguearseSiSePuede()
{
UserLoginDB userDB = new UserLoginDB();
IEnumerable<UserLogin> users = userDB.getUsers();
var items = users.ToList();
Debug.WriteLine("usuario: " + items.Count());
if (items.Count() > 0)
{
var secondpage = new MasterDetail();
await Navigation.PushAsync(secondpage);
}
else
{
var secondpage = new Login();
await Navigation.PushAsync(secondpage);
}
}
}
ログDebug.WriteLine( "usuario:" + items.Count())これは私のスプラッシュ画面のコードです。ユーザーはデータベースに正しく格納されますが、Windowsではスプラッシュ画面が読み込まれ、どの画面にも移動しません。
Windowsでこの機能が動作しない理由を知っている人はいますか?
ありがとうございます。
loguearseSiSePuedeは非同期メソッドです。それをawaitで呼び出す必要があります。しかし、SplashScreenを別の方法で作成する必要があると思います。http://codeworks.it/blog/?p=294 –
チップ@AlessandroCaliaroをありがとう。私はコンストラクタで非同期メソッドを呼び出すことはできません...可能な解決策? – n4h1n
私はあなたが正しく働いていないと思います。あなたはSplashScreenを作成している(同じ瞬間に)、別のページを押す...私が投稿したリンクを見て、SplashScreenを作成する方法を変更し、App.csで最初のページを作成する(LoginまたはMasterDetail) –