我正在尝试使用PreferenceManager类中的Reflection设置onTreePreferenceClickListener。
public static void SetOnPreferenceTreeClickListener (PreferenceManager manager, IOnPreferenceTreeClickListener listener)
{
try {
Class cl = Java.Lang.Class.FromType (typeof(PreferenceManager));
Field onPreferenceTreeClickListener = cl.GetDeclaredField ("mOnPreferenceTreeClickListener");
onPreferenceTreeClickListener.Accessible = true;
if (listener != null) {
Java.Lang.Object proxy = Proxy.NewProxyInstance (manager.Class.ClassLoader, new Class[] {Class.FromType(typeof(IOnPreferenceTreeClickListener)) }, new MyInvocationHandler (listener));
onPreferenceTreeClickListener.Set (manager, proxy);
} else {
onPreferenceTreeClickListener.Set (manager, null);
}
} catch (System.Exception e) {
Console.WriteLine (TAG + " Couldn't set PreferenceManager.mOnPreferenceTreeClickListener by reflection " + e.Message);
}
}
我试图从listener.GetType()获取类对象。
但它抛出异常,或者它不是从java或IllegalArgument派生的。