によって定義された私は、AndroidとAspectJのを使用していると私は正常にこの側面でView.setOnClickListener()
への呼び出しをキャプチャしています:キャプチャView.setOnClickListener()XML
public aspect Test {
pointcut callPointcut(View view, OnClickListener listener) : call(void View.setOnClickListener(OnClickListener)) && target(view) && args(listener);
@SuppressAjWarnings // Exported advice
before(View view, OnClickListener listener) : callPointcut(view, listener)
{
Log.d("AspectJ", "Attempt to set onClick listener on view " + Integer.toHexString(view.getId()));
Log.d("AspectJ", "Aspect has executed.");
Log.d("AspectJ", listener.toString());
}
}
残念ながら、これはで設定リスナーを捕捉しませんレイアウトXMLでこれをキャプチャする方法はありますか?
プログラムですべてのビューをチェックしても構いませんが、どのようにリスナーをチェックするのですか? 'getOnClickListener()'はありませんが( 'getOnFocusChangeListener()' ...:P) – m0skit0
ああ。私はなぜそれが不思議です。私の悪い、私はあると思った。申し訳ありませんが、あなたを助けることはできません。私はaspectjに慣れていない、私はちょうどonclicklistenerはビューのコンストラクタ(レイアウトを膨張させるとき)でXMLを解析するときに直接設定されることを伝えることができます。あなたはxmlを自分で解析することができますが、呼び出されたメソッド名は少なくとも取得されますが、リスナーオブジェクトはありません。それはおそらく仕事の大部分です。 –
はい私はXMLの解析について考えました。あなたの答えをありがとう:) – m0skit0