我知道Android存在链接问题,我知道使用LinkerPleaseInclude。但是我不确定将什么放入LinkerPleaseInclude.cs文件中以解决我遇到的问题。
我有一个视图,它使用Visibility转换器使用布尔值IsBusy属性来确定是否应显示多个控件。我正在使用ProgressBar,TextView和ImageView。我尝试了许多组合来解决链接器问题。
当部署为调试时,一切正常,这只是一个发布问题。
例如,我的progressBar定义如下(可见性转换器与其他控件的使用方式相同)
<ProgressBar
android:id="@+id/pbHeaderProgress"
style="?android:attr/progressBarStyle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_centerVertical="true"
android:layout_centerInParent="true"
local:MvxBind="Visibility Visibility(IsBusy)" />
我已将以下内容添加到LinkerPleaseInclude.cs中。为简洁起见,我没有包含整个文件
public void Include(ProgressBar progressBar)
{
progressBar.Visibility = ViewStates.Invisible;
}
public void Include(TextView textView)
{
textView.TextChanged += (sender, args) => textView.Text = "" + textView.Text;
textView.Hint = "" + textView.Hint;
textView.Visibility = ViewStates.Invisible;
}
public void Include(ImageView imageView)
{
imageView.Visibility = ViewStates.Invisible;
imageView.Visibility = ViewStates.Visible;
imageView.Visibility = ViewStates.Gone;
}
public void Include(MyViewModel viewModel)
{
viewModel.PropertyChanged += (sender, args) => { };
}
public void Include(MvxVisibilityValueConverter converter)
{
converter.Convert(null, null, null, null);
}
这些似乎都不起作用。有人帮助我,让我知道我应该投入什么来获得工作的可见性
答案 0 :(得分:8)
问题在于,在构建Android应用程序的发布版本时,您有时会发现某些行为不起作用。这是由于它链接程序的方式。我认为它以一种方式优化,删除它认为不使用的代码。要在基于MvvmCross的应用程序中修复它,您必须将调用添加到您认为已优化的代码中。这是通过使用LinkerPleaseInclude.cs文件并添加对&#34; missing&#34;的调用来完成的。码。在这种情况下,ProgressBar控件上的可见性无效。我曾尝试将代码添加到LinkerPleaseInclude.cs文件,但它无法正常工作。我找到了解决方案并添加了答案。
我将以下代码放入LinkerPleaseInclude.cs。我认为它有效,因为它同时使用了setter和getter
public void Include(ProgressBar ProgressBar)
{
progressBar.Visibility = !progressBar.Visibility;
}