Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/xamarin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Xamarin Android-只有创建视图层次结构的原始线程才能接触其视图_Android_Xamarin_Xamarin.android - Fatal编程技术网

Xamarin Android-只有创建视图层次结构的原始线程才能接触其视图

Xamarin Android-只有创建视图层次结构的原始线程才能接触其视图,android,xamarin,xamarin.android,Android,Xamarin,Xamarin.android,当按下login按钮时,它抛出一个提到的错误,尽管按钮中已经使用了async来运行任务,并且代码是正确的 token = await Task.Run(() => { return core.SignIn(username.Text, password.Text); }).ConfigureAwait(false); 您正在尝试与UI的一个元素交互,该元素是由主调度器从任务中创建的 token = await Task.Run(() => { return core.S

当按下login按钮时,它抛出一个提到的错误,尽管按钮中已经使用了async来运行任务,并且代码是正确的

token = await Task.Run(() => { return core.SignIn(username.Text, password.Text); }).ConfigureAwait(false);

您正在尝试与UI的一个元素交互,该元素是由主调度器从任务中创建的

token = await Task.Run(() => 
{ 
    return core.SignIn(username.Text, password.Text); 
}).ConfigureAwait(false);
需要类似于:

token = await Task.Run(() => 
{ 
    Activity.RunOnUiThread(()=>{
        return core.SignIn(username.Text, password.Text); 
    });
}).ConfigureAwait(false);
编辑:

基于您从EditText控件获取用户名和密码的假设进行了轻微调整:

token = await Task.Run(() => 
{ 
    string usernm = string.Empty;
    string pass = string.Empty;

    Activity.RunOnUiThread(()=>{
          usernm = username.Text;
          pass = password.Text;
    });

    return core.SignIn(usernm, pass);
}).ConfigureAwait(false);

函数中的某些内容正在从主线程以外的线程进行UI更改。这在Android中是不允许的。解决方案是在主线程上进行这些更改。转换为void returning委托的匿名函数无法在您提到的代码上返回值(return)。这是您的代码,我所做的只是将主操作包装到主dispatcher委托中。你真的试过吗?