任何人都可以帮我解决我的问题吗?现在已经试图解决这个问题差不多一个星期了。顺便说一句。我在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;
}
}
}
});
仍然无法正常工作:(有人请帮忙吗?