不支持 Xamarin PushAsync 方法
Xamarin PushAsync method not supported
我已经阅读了 this 线程和其他一些关于类似错误的内容,但遗憾的是我仍然不明白如何解决我的问题。
我有一个方法应该打开 ZXScannerPage
以便我可以阅读二维码
protected override async void OnAppearing()
{
base.OnAppearing();
var scanPage = new ZXingScannerPage();
scanPage.OnScanResult += (result) => {
// Stop scanning
scanPage.IsScanning = false;
// Pop the page and show the result
Device.BeginInvokeOnMainThread(() => {
Navigation.PopAsync();
DisplayAlert("Scanned Barcode", result.Text, "OK");
});
};
// Navigate to our scanner page
await Navigation.PushAsync(scanPage); // Here is the error
}
我需要在 await Navigation.PushAsync(scanPage);
调用
之前使用此功能
MainPage = new NavigationPage(<Something goes here>);
但我不确定它应该去哪里,我应该给它什么参数
不支持PushAsync
方法,因为应用的MainPage不是NavigationPage
.
创建重写 OnAppearing
方法的页面。在此方法中使用您的代码。
当应用程序在 App.xaml.cs 或 App.cs 中启动时,取决于项目类型,调用构造函数
MainPage = new NavigationPage(new YourPage());
这将在您的页面中调用 OnAppearing
方法,您的代码会将扫描仪页面向上推送。
编辑
你可以像
一样使用你的scannerPage
var scanPage = new ZXingScannerPage();
scanPage.OnScanResult += (result) => {
// Stop scanning
scanPage.IsScanning = false;
// Pop the page and show the result
Device.BeginInvokeOnMainThread(() => {
Navigation.PopAsync();
DisplayAlert("Scanned Barcode", result.Text, "OK");
});
};
MainPage = new NavigationPage(scanPage);
在这种情况下,扫描完成后 Navigation.PopAsync() 将不起作用,因为导航堆栈中只有一页(NavigationPage 除外)。
我想你想知道如何初始化和使用导航页面功能,
在使用 PushAsync 和 PopAsync 功能之前,您需要使用应用中的某个页面初始化一个新的导航页面。
MainPage = new NavigationPage(Something goes here);
您可以将导航页面设置为应用 class 中的主页面,使用您应用中的一些基页,即登录页面或欢迎页面
public class App : Application
{
public App()
{
var nPage = new NavigationPage(new WelcomePage()); // or new LoginPage()
MainPage = nPage;
}
}
现在您已经使用一些基本页面初始化了导航页面,您可以推送或弹出其他页面,即您的扫描页面。
我已经阅读了 this 线程和其他一些关于类似错误的内容,但遗憾的是我仍然不明白如何解决我的问题。
我有一个方法应该打开 ZXScannerPage
以便我可以阅读二维码
protected override async void OnAppearing()
{
base.OnAppearing();
var scanPage = new ZXingScannerPage();
scanPage.OnScanResult += (result) => {
// Stop scanning
scanPage.IsScanning = false;
// Pop the page and show the result
Device.BeginInvokeOnMainThread(() => {
Navigation.PopAsync();
DisplayAlert("Scanned Barcode", result.Text, "OK");
});
};
// Navigate to our scanner page
await Navigation.PushAsync(scanPage); // Here is the error
}
我需要在 await Navigation.PushAsync(scanPage);
调用
MainPage = new NavigationPage(<Something goes here>);
但我不确定它应该去哪里,我应该给它什么参数
PushAsync
方法,因为应用的MainPage不是NavigationPage
.
创建重写 OnAppearing
方法的页面。在此方法中使用您的代码。
当应用程序在 App.xaml.cs 或 App.cs 中启动时,取决于项目类型,调用构造函数
MainPage = new NavigationPage(new YourPage());
这将在您的页面中调用 OnAppearing
方法,您的代码会将扫描仪页面向上推送。
编辑 你可以像
一样使用你的scannerPagevar scanPage = new ZXingScannerPage();
scanPage.OnScanResult += (result) => {
// Stop scanning
scanPage.IsScanning = false;
// Pop the page and show the result
Device.BeginInvokeOnMainThread(() => {
Navigation.PopAsync();
DisplayAlert("Scanned Barcode", result.Text, "OK");
});
};
MainPage = new NavigationPage(scanPage);
在这种情况下,扫描完成后 Navigation.PopAsync() 将不起作用,因为导航堆栈中只有一页(NavigationPage 除外)。
我想你想知道如何初始化和使用导航页面功能,
在使用 PushAsync 和 PopAsync 功能之前,您需要使用应用中的某个页面初始化一个新的导航页面。
MainPage = new NavigationPage(Something goes here);
您可以将导航页面设置为应用 class 中的主页面,使用您应用中的一些基页,即登录页面或欢迎页面
public class App : Application
{
public App()
{
var nPage = new NavigationPage(new WelcomePage()); // or new LoginPage()
MainPage = nPage;
}
}
现在您已经使用一些基本页面初始化了导航页面,您可以推送或弹出其他页面,即您的扫描页面。