2014-12-02 48 views
4

我知道有链接问题与Android和我知道关于使用LinkerPleaseInclude。不过,我不确定要将LinkerPleaseInclude.cs文件放入我看到的问题。MvvmCross Android链接问题的可见性转换器

我有一个视图,它使用可见性转换器来使用布尔IsBusy属性来确定是否应该显示一些控件。我正在使用ProgressBar,TextView和ImageView。我已经尝试了很多组合来解决链接器问题。

当作为调试工具进行部署时,它只是一个释放问题。

因此,例如,我的进度被定义如下(可见性转换器被用于以相同的方式为其他控件)

<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); 
    } 

这些都不似乎工作。 CAn有人帮助我,并让我知道我应该投入什么才能使可见性工作

+0

您实际上没有指定您看到的问题。发生什么事?你的ProgressBar没有显示?你的日志有什么用处? – PkL728 2014-12-05 17:52:08

+0

这个奇怪的,我现在的答案似乎已经消失 – rideintothesun 2014-12-06 19:32:21

+0

我不明白这个问题.. – 2014-12-07 21:36:18

回答

8

问题是,当构建Android应用程序的发布版本时,您有时会发现某些行为不起作用。这是由于它连接程序的方式。我相信它会以一种删除它认为它不使用的代码的方式进行优化。要在基于MvvmCross的应用程序中修复它,您必须将调用添加到您认为已经优化的代码中。这是通过使用LinkerPleaseInclude.cs文件并将调用添加到“缺少的”代码来完成的。在这种情况下,ProgressBar控件上的可见性不起作用。我曾尝试将代码添加到LinkerPleaseInclude.cs文件,但它不起作用。我找到了解决方案并添加为答案。

我把下面的代码放到LinkerPleaseInclude.cs中。我认为它是有效的,因为它同时使用了setter和getter

public void Include(ProgressBar ProgressBar) 
{ 
    progressBar.Visibility = !progressBar.Visibility; 
} 
+0

谢谢你,这是困扰了这个小时! – 2015-04-23 11:25:40