2017-12-06 9 views
0

MvvmCrossを使用してXamarinのプロジェクトで作業しています。リンカーを使用して、AndroidおよびiOSのリリース用にアプリケーションサイズをダウンしようとしています。 (フォームがありません)Xamarin.Android "Link SDK Assemblies"を選択した場合、TextViewで変更イベントが発生しない

Androidで「Link SDK Assemblies Only」を選択すると、プロジェクトはクラッシュやエラーメッセージなしで構築され、実行されます。しかし、EditTextコントロールのどれも、テキストが変更され、データバインディングが更新されず、Changedイベントハンドラが呼び出されないときに、正しく応答しません。

「リンクしない」を選択すると、すべて正常に動作します。バインディングが更新され、イベントハンドラが呼び出されます。

私はXamarin Linker documentationを見ています。さまざまなアセンブリ、タイプ、およびメソッドを確実に保持する方法を知っています。私の問題は、何を保存する必要があるのか​​分かりませんし、どのように見つけ出すのか分かりません。私は成功したbitdifferのようなツールを試しました。

私は何かを保存する必要があるのを誰でも理解できますか?

+1

DroidプロジェクトにLinkerPleaseIncludeというファイルがありますか? – nmilcoff

答えて

1

次のコードを含むあなたのAndroidプロジェクトにLinkerPleaseInclude.csファイルを追加します。

public class LinkerPleaseInclude 
{ 
    public void Include(TextView text) 
    { 
     text.AfterTextChanged += (sender, args) => text.Text = "" + text.Text; 
     text.Hint = "" + text.Hint; 
    } 
} 

EditTextので、これは、リンカは、あなたがTextView.AfterTextChangedイベントを参照すると考えることによって、あなたの問題の世話をするTextViewから継承しています。参考Android LinkerPleaseInclude.csファイルhereが見つかります。

+0

これは完全に機能しました。どうもありがとうございました! –

1

この現象は、LinkerPleaseIncludeファイルにEditTextへの参照がない場合によく見られます。その理由は、リンカーがあなたのアプリケーションから参照/使用されていないものをすべて取り除くからです。 LinkerPleaseIncludeファイル内の参照を使用すると、リンカーは使用状況を認識し、イベントハンドラを保持します。

関連する問題