Ich habe die folgende Ansicht, wo der Inhalt des AppCompatEditText an die Eigenschaft "ArticleName" des ViewModel binden sollte. Dies funktioniert in Debug-Builds, aber nicht in Release-Builds. Was ist der Grund für diesen Effekt? Es ist ein ziemlich einfaches ViewModel eines Dialogs.Datenbindung mit AppCompatEditText funktioniert nicht in Release Build
<RelativeLayout xmlns:local="http://schemas.android.com/apk/res-auto"
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:minWidth="25px"
android:minHeight="25px">
<TextView
android:id="@+id/txtHeadline"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="@dimen/activity_vertical_margin"
android:textAppearance="@android:style/TextAppearance.DialogWindowTitle"
android:text="New item" />
<AppCompatEditText
android:id="@+id/editArticleName"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@id/txtHeadline"
local:MvxBind="Text ArticleName" />
<Button
android:id="@+id/btnAdd"
android:text="Add"
android:layout_below="@id/editArticleName"
android:layout_alignParentRight="true"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="@color/colorPrimary"
local:MvxBind="Click AddItem;Enabled CanAddItem"
style="?android:attr/borderlessButtonStyle" />
Das Ansichtsmodell:
public class MyViewModel : MvxViewModel
{
private string m_ArticleName;
public string ArticleName
{
get
{
return m_ArticleName;
}
set
{
m_ArticleName = value;
RaiseAllPropertiesChanged();
// this setter is never called
}
}
public MvxCommand AddItem
{
get;
private set;
}
public bool CanAddItem
{
get
{
return !String.IsNullOrEmpty(m_ArticleName);
}
}
public MyViewModel()
{
AddItem = new MvxCommand(doAddItem);
}
private void doAddItem()
{
// is never called in releases build because CanAddItem is never true
}
}
Ich habe auch die folgende Aussage zu LinkerPleaseInclude.cs ohne Wirkung:
public void Include(AppCompatEditText text)
{
text.TextChanged += (sender, args) => text.Text = "" + text.Text;
text.Hint = "" + text.Hint;
text.Text = "Test";
}
Edit:
der gleichen effec t tritt auf, wenn ich den AppCompatEditText mit einem regulären EditText vertausche.
, wenn etwas Arbeit in Debug-Version und nicht im Release-Modus arbeiten prüfe proguard machen. – Killer
Proguard ist nicht aktiv (hat diese Einstellung aber nie geändert) –