2016-06-29 5 views
0

Я использую привязок библиотеки в соответствии с документацией, однако, когда Коу использовать элемент управления в Xamarin не работает, говорит, что ошибка в строке проекта: https://github.com/OrangeGangsters/SwipyRefreshLayout/blob/master/lib/src/main/java/com/orangegangsters/github/swipyrefreshlayout/library/SwipyRefreshLayout.java#L294Android Библиотека styleable атр, не работает в Xamarin Android

Глядя журналы речи: java.lang.ClassNotFoundException: не нашли класс «com.orangegangsters.github.swipyrefreshlayout.library.R $ styleable»

Некоторые говорят, что вы должны поставить «публиковать по умолчанию правда» скомпилировать но в моем случае это не сработало, если у вас есть какие-то предложения о том, что может быть

ответ

1

1) Клонирование SwipyRefreshLayout репо

2) Построить проект в Android Studio произвести выпуск отладки & aar «ы

3) Используйте релиз aar в вашем Xamarin.Android связывания проекта

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

5) Добавить проект связывания в качестве ссылки на ваш Xamarin.Android приложение.

4) Добавить ресурсы Swipy Java Тестовые приложения для вашего # приложение C

Примечание: Это просто ярлык, чтобы пропустить, чтобы вручную обновить их для тестового приложения.

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

Я не пробовал эту альтернативу, но может быть хорошим вариантом, когда у вас есть файл .aar – Erli

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