2016-09-29 2 views
0

Я начинаю работать в портативном проекте xamarin.forms, я работаю над портативным проектом xamainr.forms, там я столкнулся с проблемой. У меня есть страница .xaml в моем переносном проекте, и я перехожу к этой .xaml-странице из App.cs, используя следующую строку кода.MyCustomPage.xaml не загружает webView в xamarin.Forms portable

var ep = new CustomWebViewPage(dbPath); 
var MainEv = new NavigationPage(ep); 

Вот в CustomWebViewPage я использую WebView в следующий способ загрузки Url, но после успешного выполнения выше линии эмулятор не загружается WebView. Я не знаю, почему это происходит. Я вставляю код CustomWebViewPage следующим образом.

CustomWebViewPage.xaml.cs

using XamarinDbokReader.SQLite_AppSample; 
using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using System.Threading.Tasks; 
using Xamarin.Forms; 
using System.IO; 

namespace MyDummyProject 
{ 
    public partial class CustomWebViewPage : ContentPage 
    { 
     public string dbPath = ""; 
     public CustomWebViewPage(string folderPath) 
     { 
      this.dbPath = folderPath; 
      HttpHelperClass helperClass = new HttpHelperClass(); 
      InitializeComponent(); 
      var webView = new WebView(); 
      UrlWebViewSource urlWebViewSource = new UrlWebViewSource() 
      { 
       Url = UrlsList.FindUrl("ProEportalLoginPage") + UrlsList.ApiKeys(AppMode.ProductionMode.ToString()) 
      }; 
       webView.Source = urlWebViewSource; 
       webView.Navigated += (s, e) => 
       { 
        if (e.Url.StartsWith("http://userInfo/?")) 
        { 
         string token = ""; 
         try 
         { 
          string value_string = Uri.UnescapeDataString(e.Url.ToString()); 
          token = value_string.Split('=')[1]; 
          if (!string.IsNullOrEmpty(token)) 
          { 
           string path = Path.Combine(dbPath.ToString(), "dBookStore.db3"); 
           helperClass.SaveUserInformation(token, path); 
          } 
         } 
         catch (Exception ss) 
         { 
         } 
        } 
      }; 
      wvEportalPage = webView; 
     } 
     public CustomWebViewPage() 
     { 

     } 
    } 
} 

CustomWebViewPage.xaml

<?xml version="1.0" encoding="utf-8" ?> 
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms" 
     xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml" 
     x:Class="XamarinDbokReader.EportalPage"> 
    <Label Text="{Binding MainText}" VerticalOptions="Center" HorizontalOptions="Center" /> 
    <WebView x:Name="wvEportalPage"></WebView> 
</ContentPage> 

App.cs

public App(bool isSqliteDbExist, string sPath) 
    { 
     isDbExist = isSqliteDbExist; 
     dbPath = sPath; 
     if (isDbExist) 
     { 
      if (isLoggedIn) 
      { 
       NavigationPage navPage = new NavigationPage(new BooksView()); 
       App.Current.MainPage = navPage; 
      } 
      else 
      { 
       var tdlx = new CustomWebViewPage(dbPath); 
       var MainNave = new NavigationPage(tdlx); 
      } 
     } 
     else 
     { 
      //When cursor is coming from MainActivity then following line executes. And then OnStart() method executes. 
      ssd.CreateTablesInDb(); 
      isDbExist = true; 
     } 
    } 

protected override void OnStart() 
    { 
     if (isDbExist) 
     { 
      if (isLoggedIn) 
      { 
       NavigationPage navPage = new NavigationPage(new BooksView()); 
       App.Current.MainPage = navPage; 
      } 
      else 
      { 
       var ep = new CustomWebViewPage(dbPath); 
       var MainEv = new NavigationPage(ep); 

      } 
     } 
    } 

MainActivity

protected override void OnCreate(Bundle bundle) 
    { 
     base.OnCreate(bundle); 
     global::Xamarin.Forms.Forms.Init(this, bundle); 
     var documents = System.Environment.GetFolderPath(System.Environment.SpecialFolder.Personal); 
     var bookCoverFolder = Path.Combine(documents, "BooksCover"); 
     var booksCollection = Path.Combine(documents, "Books"); 
     var bookResource = Path.Combine(documents, "Resource"); 
     if(!Directory.Exists(bookCoverFolder)) 
      Directory.CreateDirectory(bookCoverFolder); 
     if (!Directory.Exists(booksCollection)) 
      Directory.CreateDirectory(booksCollection); 
     if(!Directory.Exists(bookResource)) 
      Directory.CreateDirectory(bookResource); 
     SQLite_Android androidDb = new SQLite_Android(); 
     if (androidDb.IsExist()) 
     { 
      LoadApplication(new App(true, androidDb.dbStorePath)); 
     } 
     else 
     { 
      LoadApplication(new App(false, androidDb.dbStorePath)); 

     } 
    } 
+0

этот код даже не скомпилирован. ваше имя класса - «CustomWebViewPage», а конструктор - «EportalPage» –

+0

. Да, Стефан, вы правы, я переименовал его правильно. –

ответ

0

Спасибо за удивительные sugessions, но я нашел свою ошибку в коде. Я сделал очень небольшую ошибку в App.cs. После настройки страницы навигации я не устанавливаю NavigationPage в MainPage. Это должно быть ниже.

var tdlx = new CustomWebViewPage(dbPath); 
var MainNave = new NavigationPage(tdlx); 
MainPage = MainNave; 

он отлично работал. Я знал о MainPage, но я не писал из-за некоторых других регионов, но в конечном итоге он работает.

1

WebView вероятно, не получает каких-либо Width или Height.

Попробуйте установить VerticalOptions и HorizontalOptions объектов на FillAndExpand.

Так как это:

<?xml version="1.0" encoding="utf-8" ?> 
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms" 
     xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml" 
     x:Class="XamarinDbokReader.EportalPage"> 
    <Label Text="{Binding MainText}" VerticalOptions="Center" HorizontalOptions="Center" /> 
    <WebView x:Name="wvEportalPage" VerticalOptions="FillAndExpand" HorizontalOptions="FillAndExpand"></WebView> 
</ContentPage> 

Если это, кажется, не работает, попробуйте окружив его Grid.

+0

ОК, я попробую и обновит вас в ближайшие минуты. –

+0

После применения сетки я вижу, что страница перемещается на страницу CustomWebViewPage, но с черным экраном. Я не смог найти страницу URL, которую я уволил. –

+0

Я вижу, что вы пытаетесь сделать какой-то пользовательский URL-адрес или что-то еще? Попробуйте что-то тривиальное, например google.com. Это что-то показывает? –

0

Вы должны определить ширину и высоту для Xamarin WebView.

Смежные вопросы