私はウェブサイトにアクセスしてAPIから結果を取得し、既存のLinearLayoutにいくつかのクリック可能なテキストビューを追加する、私のアプリケーションとの非同期タスクを持っています。アクティビティ外でインテントを起動する
ただし、テキストビューをクリックしたときに新しいアクティビティを開始できるようにしたいと考えています。別のファイルに定義されているasynchクラスでは不可能です。アクティビティ内でインラインクラスとして定義する方が簡単でしょうか?
私はウェブサイトにアクセスしてAPIから結果を取得し、既存のLinearLayoutにいくつかのクリック可能なテキストビューを追加する、私のアプリケーションとの非同期タスクを持っています。アクティビティ外でインテントを起動する
ただし、テキストビューをクリックしたときに新しいアクティビティを開始できるようにしたいと考えています。別のファイルに定義されているasynchクラスでは不可能です。アクティビティ内でインラインクラスとして定義する方が簡単でしょうか?
Contextをいつでも非同期クラスに渡すことができます。
より良い方法は、呼び出し元のクラスでコールバック(リスナー)を呼び出して、asyncがコールバックするようにすることです。
1つのアプローチは、onClick属性を宣言したXMLファイルからTextViewを展開し、アクティビティで定義されたメソッドに名前を付けることです。
アクティビティとしてコンテキストを使用しないでください!とにかくキャストエラーが発生するでしょう。代わりに、次のように関数をパラメータとして渡すことができます。
public void function(Activity act)
{
Intent intent = new Intent(act, newActivity.class);
act.startActivity(intent);
}
または、アクティビティをパラメータとして受け入れるようにコンストラクタをオーバーロードします。しかし、コードを確認することを強くお勧めします。アクティビティを呼び出す場合は、おそらく別のアクティビティ内にあるはずです。同意しないのですか?しかし、時には物事を適切に機能させるためにいくつかの譲歩をしなければならないことを知っています。だから、それを賢明に使ってください。
これはおそらくこの問題に対する最良の解決策です。しかし、私はちょっと騙されて、アクティビティ内でクラスをインライン化しました。 – purserj