デザインに問題があります。リスナーを実装する必要があります。私は次のSO質問を見ました: androidで独自のリスナーインターフェイスを作成する方法?
しかし、それが答えで提供するリンクで、著者はシステム定義のリスナーを拡張するだけのリスナーを作成します。たとえば、onClickの場合、検証を行ってから、「whenValidatedListener」という別のメソッドを呼び出します。
既存のイベントリスナーにリンクされていないリスナーを定義する必要があります。基本的に、ネイティブ(C/C++)コードとAndroidコード)でいくつかの処理が行われます。特定のメッセージからの応答にリスナーが必要です。
ハンドラーを使用してこれを行うことができると思います。ただし、AsyncTaskはマルチスレッドの推奨アプローチです。
AsyncTaskを使用してユーザー定義のリスナーを実装する方法はありますか?
AsyncTaskは、リスナーの実装とは何の関係もありません。
これがリスナーです:
public interface TheListener {
public void somethingHappened();
}
好きなように呼んでください。たとえば、ビューのようなものを行うクラスは次のとおりです。
public class Something {
private TheListener mTheListener;
public void setTheListener(TheListener listen) {
mTheListener = listen;
}
private void reportSomethingChanged() {
if (mTheListener != null) {
mTheListener.somethingHappened();
}
}
}
これは好きなだけ複雑にすることができます。たとえば、単一のリスナーポインターの代わりに、ArrayListを使用して複数のリスナーを登録できます。
これをネイティブコードから呼び出すことも、リスナーインターフェイスの実装とは関係ありません。ネイティブコードがJava言語コードとどのように相互作用するかを学ぶには、JNIについて学ぶ必要があります。
物事を片付けるために;
あなたは@hackbodが言ったことを正確に行い、これを追加します:
(メソッドsetListener(Listener listen)
を使用して)クラスを囲むactivity
はListener
を実装し、その中にoncreate
またはonResume
または-これまでにyourClass.setListener(this)
を呼び出しています。