【问题标题】:If Value is present in sqlite move to second page else first page in Xamarin如果 sqlite 中存在值,则移至第二页,否则 Xamarin 中的第一页
【发布时间】:2015-08-31 23:51:00
【问题描述】:

我正在 Xamarin.forms 中创建一个应用程序,我想在其中更改具有某些条件的页面。如果我的 sqlite 表已填满,那么我想移至第二页,否则我将在我的应用启动时移至第一页,我必须检查。

步骤:-

1)当我们第一次点击应用程序时,它会检查sqlite数据库是否为空。

2)如果数据库为空,它将显示第一页,然后单击按钮将值存储在数据库中并移至第二页。

3)如果数据库不为空则直接进入第二页。

这是我的示例代码

    public static Connect Data { get; private set; }
    public static MasterDetailPage MasterDetailPage;

    public App(string dbPath, ISQLitePlatform sqlitePlatform)
    {

      Data = new Connect(sqlitePlatform, dbPath);

      List<Username> User = await App.Data.User();

      if (User.Count() > 0)
      {
          MasterDetailPage = new Xamarin.Forms.MasterDetailPage
          {
              Master = new Menu(),
              Detail = new NavigationPage(new second())
              {
                  Tint = Color.FromHex("3F51B5")
              }
          };

          MasterDetailPage.MasterBehavior = MasterBehavior.Popover;

          MainPage = MasterDetailPage;
      }
      else
      {
          MainPage = new NavigationPage(new first())
          {
              Tint = Color.FromHex("3F51B5")
          };
      }
    }

我知道我的代码是错误的,请建议我如何解决这些问题。

List User = await App.Data.User();//显示错误await需要异步函数但是你不能定义app有异步

我将如何从数据库中获取用户数

【问题讨论】:

  • 您的代码有什么“错误”?您需要更具体地说明您的问题是什么
  • @JordanMazurke 我确实在我的代码中进行了编辑,你现在可以看到错误了

标签: sqlite xamarin xamarin.forms


【解决方案1】:

您不能在构造函数中使用异步方法。一种选择是将您的代码移动到异步初始化任务,如下所示:

public class App
{
  private readonly Task initTask;

  public App(string dbPath, ISQLitePlatform sqlitePlatform)
  {
    initTask = Init();
  }

  private async Task Init()
  {
    // Move your code here
  }
}

...但它通常被认为是一种不好的做法。 您绝对不应该在 Xamarin.Forms App 类构造函数中使用异步。

【讨论】:

    猜你喜欢
    • 2021-10-22
    • 1970-01-01
    • 2013-09-29
    • 2013-03-03
    • 1970-01-01
    • 1970-01-01
    • 2021-01-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多