0

とという2つのアクティビティがActivity_AありActivity_Bます。Activity_Aに次のようなメソッドまたは関数があります。

public void printNumber (int i) {
    for(int j = 0; j <= i; j++) {
        Log.w("TAG", "Print number is: " + j);
    }
}

次に、Activity_Bという別のアクティビティからこのメソッドを呼び出します。

次の行を使用してこのメ​​ソッドを呼び出そうとしています。

((Activity_A) this.getApplicationContext()).printNumber();

この行をActivity_BのonCreateに書き込むと、アプリケーションがクラッシュし、logcatに次のエラーが表示されます。

java.lang.ClassCastException: android.app.Application cannot be cast to com.example.app.Activity_A

これどうやってするの?

編集: 私はこの質問を見つけました、そして「リッチ」によるActivity_AActivity_B。しかし、問題はActivity_Bリストアクティビティであり、私はすでにこれをで拡張していListActivityます。

およびその他の回答は、のインスタンスを作成してからActivity_Aメソッドを呼び出します。これを行うと、すべての変数が空になるか、nullになりますActivity_A。そして、私は静的メソッドを作りたくありません。

静的参照または別のインスタンスを作成せずにこれを行う他の方法はありますか?

4

3 に答える 3

1

getApplicationContextは、ActivityではなくApplicationタイプのクラスを提供します。したがって、これは機能しません。アクティビティの静的コンテキストを保存してから、このメソッドを呼び出す必要があります。あなたがやろうとしていることの詳細を投稿すると、誰かが解決策を提案します

于 2012-08-06T09:36:41.397 に答える
0

私はあなたActivity_Aがアプリケーションからではなくアクティビティから派生していると思います。getApplicationcontext()アクティビティではなく、アプリケーションを返します。

アクティビティからを使用する場合はprintNumber()、それをアプリケーションまたはサービスに配置します。

于 2012-08-06T09:41:02.893 に答える
0

アプリケーションコンテキストは、どちらのアクティビティよりも高いレベルの構成です。

アクティビティAはアクティビティBの親ではありません。

活動間の「直接的な」コミュニケーションは、

startActivityまたはstartActvityForResultを介して起動されたインテントを介してのみAからBに

Bは、startActivityForResultで呼び出され、次の応答があった場合にのみAと通信できます。

アクティビティAの次のメソッドをオーバーライドしますpublicvoidonActivityResult(int requestCode、int resultCode、Intent data)

アクティビティBでは、

http://developer.android.com/reference/android/app/Activity.html#setResult(int

于 2012-08-06T09:43:15.580 に答える