2016-06-29 12 views
0

XamarinのAndroidでは動作しません、しかし、言ってそのプロジェクトの行にエラー:https://github.com/OrangeGangsters/SwipyRefreshLayout/blob/master/lib/src/main/java/com/orangegangsters/github/swipyrefreshlayout/library/SwipyRefreshLayout.java#L294Androidのライブラリstyleableのattr、マニュアルに従って私はバインディングライブラリを使用してい

音声ログを見る:にjava.lang.ClassNotFoundException:クラスが見つかりませんでした「com.orangegangsters.github.swipyrefreshlayout.library.R $ styleable」

いくつかは、あなたがコンパイルする「真のデフォルトを公開」入れて持っていると言いますライブラリが、私の場合は、あなたが何ができるかについての示唆があれば動作しませんでした

答えて

1

1)SwipyRefreshLayoutレポ

2)デバッグ&リリースaarさん

3)あなたのXamarin.Android結合プロジェクトにリリースaarを使用を生成するためにAndroidのメーカーでプロジェクトをビルドを複製

./lib/build/outputs/aar/lib-release.aar 

5)BindingプロジェクトをXamarin.Androidへの参照として追加しますアプリ。

4)あなたのC#のアプリに

注意をSwipy Javaのテストアプリのリソースを追加します。これは、手動でテストアプリケーションのためにそれらを再作成する必要がスキップするだけのショートカットです。

5)例C#Swipyコード:

[Activity(Label = "Swipy", MainLauncher = true, Icon = "@mipmap/icon")] 
public class MainActivity : Activity 
{ 
    string[] items; 

    protected override void OnCreate(Bundle savedInstanceState) 
    { 
     base.OnCreate(savedInstanceState); 
     SetContentView(Resource.Layout.Main); 
     Button buttonTop = FindViewById<Button>(Resource.Id.button_top); 
     buttonTop.Click += onClick; 
     Button buttonBottom = FindViewById<Button>(Resource.Id.button_bottom); 
     buttonBottom.Click += onClick; 
     Button buttonRefresh = FindViewById<Button>(Resource.Id.button_refresh); 
     buttonRefresh.Click += onClick; 
     Button buttonBoth = FindViewById<Button>(Resource.Id.button_both); 
     buttonBoth.Click += onClick; 

     items = new string[] { "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", }; 
     var ListAdapter = new ArrayAdapter<String>(this, Android.Resource.Layout.SimpleListItem1, items); 

     ListView listview = FindViewById<ListView>(Resource.Id.listview); 
     listview.Adapter = ListAdapter; 

     SwipyRefreshLayout swipyrefreshlayout = FindViewById<SwipyRefreshLayout>(Resource.Id.swipyrefreshlayout); 
     swipyrefreshlayout.Refresh += async (object sender, SwipyRefreshLayout.RefreshEventArgs e) => 
     { 
      Log.Debug("MainActivity", "Refresh triggered at " + (e.Direction == SwipyRefreshLayoutDirection.Top ? "top" : "bottom")); 
      swipyrefreshlayout.Refreshing = true; 
      await Task.Delay(2000); // simulate some data refresh 
      RunOnUiThread(() => 
      { 
       swipyrefreshlayout.Refreshing = false; 
      }); 
     }; 
    } 

    async void onClick(object sender, EventArgs e) 
    { 
     SwipyRefreshLayout swipyrefreshlayout = FindViewById<SwipyRefreshLayout>(Resource.Id.swipyrefreshlayout); 

     var v = (View)sender; 
     switch (v.Id) 
     { 
      case Resource.Id.button_top: 
       swipyrefreshlayout.Direction = SwipyRefreshLayoutDirection.Top; 
       break; 
      case Resource.Id.button_bottom: 
       swipyrefreshlayout.Direction = SwipyRefreshLayoutDirection.Bottom; 
       break; 
      case Resource.Id.button_both: 
       swipyrefreshlayout.Direction = SwipyRefreshLayoutDirection.Both; 
       break; 
      case Resource.Id.button_refresh: 
       swipyrefreshlayout.Refreshing = true; 
       await Task.Delay(2000); // simulate some data refresh 
       RunOnUiThread(() => 
       { 
        swipyrefreshlayout.Refreshing = false; 
       }); 
       break; 
     } 
    } 
} 

enter image description here

+0

ありがとう、それはうまくいきました。 – Erli

0

サウンドあなたがバインドしているライブラリのリソースのようなものは何らかの理由で正しく組み込まれていません。

一時的な回避策として、属性XMLを使用してプロジェクトに直接含めることができます。これにより問題が解決されます。

どちらの場合でも、将来のリリースで修正される再現可能な手順を使用して、Xamarin Bugzillaに問題を提起する必要があります。

+0

ないバグ、彼はちょうど正しく 'それにリソースを持っているaar'を構築し使用していません。 – SushiHangover

+0

私はこの代替案を試しませんでしたが、ファイルがあるときに良いオプションになることがあります。 – Erli

関連する問題