2016-10-15 5 views
1

Ich versuche, die unverankerte Aktion Schaltfläche in Xamarin.forms aus dem NuGet FAB.Forms-Paket (github) zu verwenden. Ich versuchte, meinen Code wie das Beispiel im Sample OrdnerFloating-Aktion Schaltfläche: Fehler beim Auffüllen der Klasse FloatingActionButton

Xamarin.Droid MainActivity.cs Datei

protected override void OnCreate(Bundle bundle) 
{ 
    base.OnCreate(bundle); 

    global::Xamarin.Forms.Forms.Init(this, bundle); 

    FAB.Droid.FloatingActionButtonRenderer.InitControl(); 

    LoadApplication(new App()); 
} 

Xamarin.ios AppDelegate.cs Datei

public override bool FinishedLaunching(UIApplication app, NSDictionary options) 
{ 
    global::Xamarin.Forms.Forms.Init(); 

    FAB.iOS.FloatingActionButtonRenderer.InitControl(); 

    LoadApplication(new App()); 

    return base.FinishedLaunching(app, options); 
} 

Xamarin Gebrauch zu machen. tragbar App.cs Datei

public App(){MainPage = new LatestNews();} 

LatestNews.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" 
      xmlns:fab="clr-namespace:FAB.Forms;assembly=FAB.Forms" 
      x:Class="HuraApp.Pages.LatestNews"> 
    ... 
    <fab:FloatingActionButton 
       x:Name="fabBtn" 
       Source="plus.png" 
       Size="Normal" 
       Clicked="Handle_FabClicked" 
       NormalColor="Green" 
       RippleColor="Red" /> 
    ... 
</ContentPage> 

LatestNews.xaml.cs

void Handle_FabClicked(object sender, System.EventArgs e) 
{ 
    this.DisplayAlert("Floating Action Button", "You clicked the FAB!", "Awesome!"); 
} 

portable packages.config Datei

Datei Datei
<?xml version="1.0" encoding="utf-8"?> 
<packages> 
    <package id="FAB.Forms" version="2.1.1" targetFramework="portable45-net45+win8+wpa81" /> 
    <package id="Microsoft.Bcl" version="1.1.10" targetFramework="portable45-net45+win8+wpa81" /> 
    <package id="Microsoft.Bcl.Build" version="1.0.21" targetFramework="portable45-net45+win8+wpa81" /> 
    <package id="Microsoft.Net.Http" version="2.2.29" targetFramework="portable45-net45+win8+wpa81" /> 
    <package id="Newtonsoft.Json" version="9.0.1" targetFramework="portable45-net45+win8+wpa81" /> 
    <package id="sameerIOTApps.Plugin.SecureStorage" version="1.2.1" targetFramework="portable45-net45+win8+wpa81" /> 
    <package id="Xam.Plugin.Media" version="2.3.0" targetFramework="portable45-net45+win8+wpa81" /> 
    <package id="Xamarin.Forms" version="2.3.2.127" targetFramework="portable45-net45+win8+wpa81" /> 
    <package id="Xamarin.Forms.Maps" version="2.3.2.127" targetFramework="portable45-net45+win8+wpa81" /> 
</packages> 

droid package.config Datei

<?xml version="1.0" encoding="utf-8"?> 
<packages> 
    <package id="FAB.Forms" version="2.1.1" targetFramework="monoandroid60" /> 
    <package id="Microsoft.Bcl.Build" version="1.0.21" targetFramework="monoandroid60" /> 
    <package id="Xamarin.Android.Support.Animated.Vector.Drawable" version="23.3.0" targetFramework="monoandroid60" /> 
    <package id="Xamarin.Android.Support.Design" version="23.3.0" targetFramework="monoandroid60" /> 
    <package id="Xamarin.Android.Support.v4" version="23.3.0" targetFramework="monoandroid60" /> 
    <package id="Xamarin.Android.Support.v7.AppCompat" version="23.3.0" targetFramework="monoandroid60" /> 
    <package id="Xamarin.Android.Support.v7.CardView" version="23.3.0" targetFramework="monoandroid60" /> 
    <package id="Xamarin.Android.Support.v7.MediaRouter" version="23.3.0" targetFramework="monoandroid60" /> 
    <package id="Xamarin.Android.Support.v7.RecyclerView" version="23.3.0" targetFramework="monoandroid60" /> 
    <package id="Xamarin.Android.Support.Vector.Drawable" version="23.3.0" targetFramework="monoandroid60" /> 
    <package id="Xamarin.Forms" version="2.3.2.127" targetFramework="monoandroid60" /> 
    <package id="Xamarin.Forms.Maps" version="2.3.2.127" targetFramework="monoandroid60" /> 
    <package id="Xamarin.GooglePlayServices.Base" version="29.0.0.1" targetFramework="monoandroid60" /> 
    <package id="Xamarin.GooglePlayServices.Basement" version="29.0.0.1" targetFramework="monoandroid60" /> 
    <package id="Xamarin.GooglePlayServices.Maps" version="29.0.0.1" targetFramework="monoandroid60" /> 
</packages> 

iOS package.config Datei

<?xml version="1.0" encoding="utf-8"?> 
<packages> 
    <package id="FAB.Forms" version="2.1.1" targetFramework="xamarinios10" /> 
    <package id="Microsoft.Bcl.Build" version="1.0.21" targetFramework="xamarinios10" /> 
    <package id="Xamarin.Forms" version="2.3.2.127" targetFramework="xamarinios10" /> 
    <package id="Xamarin.Forms.Maps" version="2.3.2.127" targetFramework="xamarinios10" /> 
</packages> 

Aber wenn ich die Anwendung auf Android Emulator es gibt mir die Fehlermeldung

`Android.Views.InflateException: Binary XML file line #1: Binary XML file line #1: Error inflating class android.support.design.widget.FloatingActionButton` 

Warum passiert das? Was vermisse ich? und wie kann ich dieses Problem lösen?

+0

Sind verwenden Sie Aktivität MainActivity verlängern ?? –

+0

Ich codiere in C# xamarin.forms nicht android. Meine ('Activities' /' Pages') erweitern 'ContentPage'. –

+0

Ahh yess, On iOs läuft es ohne Probleme? –

Antwort

1

Ich hatte ein ähnliches Problem, aber ich benutze Android. Ändern Sie einfach das Projekt-übergeordnete Thema zu einem beliebigen Theme.AppCompat ~, das hat mein Problem gelöst, vielleicht auch Ihr. Und fügen Sie global::Xamarin.Forms.Platform.Android.FormsAppCompatActivity zu Ihrem MainActivity.cs hinzu.

[Activity(Label = "YourName", , Theme = "@style/MyTheme", MainLauncher = true, ConfigurationChanges = ConfigChanges.ScreenSize | ConfigChanges.Orientation)] 
     public class MainActivity : global::Xamarin.Forms.Platform.Android.FormsAppCompatActivity 
     { 
      protected override void OnCreate(Bundle bundle) 
      { 
       base.OnCreate(bundle); 

       global::Xamarin.Forms.Forms.Init(this, bundle); 

       FAB.Droid.FloatingActionButtonRenderer.InitControl(); 

       LoadApplication(new App()); 
      } 
     } 

Sie können Thema wie dieses Add in style.xml

<style 
     name="MyTheme" 
     parent="Base.AppTheme"> 
</style> 

<style name="Base.AppTheme" parent="Theme.AppCompat.Light.DarkActionBar"> 
<item name="windowActionBar">false</item> 
<item name="windowNoTitle">true</item> 
</style> 
+0

Ihr Code löste diesen Fehler, aber gab mir eine NullReferenceException. Ich konnte den Fehler von den zwei Ratschlägen [hier] (https://forums.xamarin.com/discussion/39955/android-cant-use-theme) lösen. aber dieses Problem zu lösen, verursachte einen anderen Fehler 'Java.Lang.IllegalStateException: Diese Aktivität hat bereits eine Aktionsleiste, die von der Fensterdekoration geliefert wird. Fordern Sie nicht Window.FEATURE_SUPPORT_ACTION_BAR an und setzen Sie windowActionBar in Ihrem Design auf "false", um stattdessen eine Toolbar zu verwenden.' –

+0

(wie immer) Dank dieser [SO Antwort] (http://stackoverflow.com/a/26515159/4614264) konnte ich mein Problem lösen. Ich füge ' false true' in meinem Designstil hinzu. @mww Ich würde froh sein, Ihre Antwort zu akzeptieren, sobald Sie es ändern, um die Fehler zu beheben, denen ich gegenüberstand. Noch einmal Danke :) –

Verwandte Themen