Xamarin prism依赖关系服务方法无法在本机上获取当前上下文的变量

时间:2018-04-30 18:05:09

标签: android xamarin prism

任何人都可以帮我解决我的问题吗?现在已经试图解决这个问题差不多一个星期了。顺便说一句。我在xamarin上使用棱镜。

这是我的代码示例:

Xamarin项目

接口

void OnToogleCommandVid()
{

    _dependencyService.Get<IVideoCommands>().OnToggleVideo();

}

视图模型

[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项目

 (_activity as Activity).RunOnUiThread(() => { IsVideoEnabled = vidToggle = !vidToggle; });

每次激活接口函数时,android类中的所有变量都没有初始化,这意味着接口不是类的上下文(IMO),类中的变量总是在接口的方法上返回null被称为。

是否有正确的方法使接口函数与android类的当前上下文一起工作?

我已经尝试了

spl_autoload_register(function ($class) {

    $load_deps = [ 
        'Egulias\\EmailValidator\\' => __DIR__ . '/EmailValidator/',
        'Doctrine\\Common\\Lexer\\' => __DIR__ . '/Doctrine/Common/Lexer/',
    ];

    foreach ($load_deps as $prefix => $base_dir) {
        // does the class use the namespace prefix?
        $len = strlen($prefix);
        if (strncmp($prefix, $class, $len) == 0) {

            // get the relative class name
            $relative_class = substr($class, $len);

            // replace the namespace prefix with the base directory, replace namespace
            // separators with directory separators in the relative class name, append
            // with .php
            $file = $base_dir . str_replace('\\', '/', $relative_class) . '.php';

            // if the file exists, require it
            if (file_exists($file)) {
                require $file;
            }
        }
    }
});

仍然无法正常工作:(有人请帮忙吗?

0 个答案:

没有答案