私はAndroid.Support.V7.Widget.SwitchCompat
を私のviewmodel(私が使っているフレームワークです)にバインドするのに苦労しています 完全にうまく動作する別のオブジェクトのクリックバインドとまったく同じでした。MvxBind CheckedChange SwitchCompat
ビューを表示するとき、私は取得していますエラーは、次のとおりです。私が持っているスイッチの量のため
12-21 10:32:06.459 I/MvxBind (22969): 42,82 Failed to create target binding for binding CheckedChange for OnCheckedChanged
[0:] MvxBind:Warning: 42,82 Failed to create target binding for binding CheckedChange for OnCheckedChanged
複数回。
彼らはそれがために反射魔法のようなものは含まないリンカーを有する何かをしなければならないかもしれないと言いました。
彼らはあなたがあなたのswitchcompatへの参照を保持するために、ファイル「LinkerPleaseInclude」を作成する必要が言ったこの方法です。私は次のようにしましたが、それでもエラーは解決しません。
LinkerPleaseInclude
class LinkerPleaseInclude
{
public void Include(TextView text)
{
text.AfterTextChanged += (sender, args) => text.Text = "" + text.Text;
text.Hint = "" + text.Hint;
}
public void Include(CompoundButton cb)
{
cb.CheckedChange += (sender, args) => cb.Checked = !cb.Checked;
cb.Hint = "" + cb.Hint;
}
public void Include(SwitchCompat cb)
{
cb.CheckedChange += (sender, args) => cb.Checked = !cb.Checked;
cb.Hint = "" + cb.Hint;
}
public void Include(ICommand command)
{
command.CanExecuteChanged += (s, e) => { if (command.CanExecute(null)) command.Execute(null); };
}
public void Include(CheckBox checkBox)
{
checkBox.CheckedChange += (sender, args) => checkBox.Checked = !checkBox.Checked;
}
}
マイViewLayout:このレイアウトは、別のレイアウトの子である
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:local="http://schemas.android.com/apk/res-auto"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="@dimen/md_list_single_line_item_height"
android:gravity="center_vertical"
android:paddingLeft="@dimen/md_list_item_horizontal_edges_padding"
android:paddingRight="@dimen/md_list_item_horizontal_edges_padding">
<android.support.v7.widget.SwitchCompat
android:id="@+id/mySwitch"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:layout_centerVertical="true"
local:MvxBind="Checked IsActive; Click OnSwitchClick; CheckedChange OnCheckedChanged" />
<TextView
android:id="@+id/Name"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:textColor="@color/md_text_dark_primary_87"
android:textSize="@dimen/md_list_item_primary_text"
local:MvxBind="Text Name"/>
<TextView
android:id="@+id/Kind"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_alignParentLeft="true"
android:textColor="@color/md_text_dark_secondary_54"
android:textSize="@dimen/md_list_item_secondary_text"
android:layout_below="@+id/Name"
local:MvxBind="Text Kind"/>
</RelativeLayout>
:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:local="http://schemas.android.com/apk/res-auto"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="@dimen/md_list_two_line_item_height"
android:paddingTop="?android:attr/actionBarSize"
android:fitsSystemWindows="true">
<MvxClickableLinearLayout
android:id="@+id/animalSelectionsList"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:divider="@drawable/divider_horizontal"
android:showDividers="middle"
local:MvxBind="ItemsSource SelectionsList"
local:MvxItemTemplate="@layout/listitem_animal_selections" />
</LinearLayout>
Iamはわからないが、android.support.v7.widget.SwitchCompatは、チェックボックスとは何の関係もないかもしれないので?そしてそれはちょうどCheckedChangeをサポートしませんか? https://developer.android.com/reference/android/support/v7/widget/SwitchCompat.html – Cyriac
SwitchCompatはCompoundButtonからの派生型です。チェックボックスと同様です。 https://developer.android.com/reference/android/widget/CompoundButton.OnCheckedChangeListener.html CompoundButtonには、「CheckedChange」イベントがあります – Baklap4
あなたのモデルを見てみることができます。リンカの場合は、リンカがsdkとユーザアセンブリのリンクを行うかどうかを決めるために、プロジェクト設定のアンドロイドオプションを異なる方法で設定してみてください(デフォルトの設定は何ですか)。それがリンカの欠陥であるかどうかをテストするだけです。 – Cyriac