2014-12-02 50 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