Может кто-нибудь помочь мне с моей проблемой? пытался решить это почти неделю сейчас. Кстати. Я использую призму на xamarin.
Вот мои примеры кода:
Проект Xamarin
Интерфейс
public interface IVideoCommands
{
void OnToggleVideo();
}
ViewModel
void OnToogleCommandVid()
{
_dependencyService.Get<IVideoCommands>().OnToggleVideo();
}
Android Project
[assembly: Xamarin.Forms.Dependency(typeof(VideoService))]
namespace XTPProto.Droid.Services
{
public class VideoService: Activity, IVideoCommands
{
private var libraryVariable _libVar;
private bool _isVideoEnabled;
public bool IsVideoEnabled
{
get { return _isVideoEnabled; }
set
{
if (_isVideoEnabled== value)
return;
_isVideoEnabled= value;
OnVideoChanged();
}
}
private void init()
{
_libVar = new libraryVariable ();
}
protected void OnVideoChanged()
{
if (_libVar== null)
return;
if (_libVar.Function != IsVideoEnabled)
_libVar.Function = IsVideoEnabled;
}
bool toggleVid = false;
*Interface function
void OnToggleVideo()
{
IsVideoEnabled = toggleVid = !toggleVid;
}
}
}
Каждый раз, когда я активирую интерфейсную функцию, все переменные в классе android не инициализируются, что означает, что интерфейс не отделен от контекста класса (IMO), переменные в классе всегда возвращают нуль в методе, где интерфейс назывался.
Есть ли правильный способ заставить функцию интерфейса работать с текущим контекстом класса android?
Я уже попробовал
(_activity as Activity).RunOnUiThread(() => { IsVideoEnabled = vidToggle = !vidToggle; });
все еще не работает :( кто-нибудь, пожалуйста, помогите?