6

関数を定義しましたMainActivity。アプリ内の別のクラスから関数にアクセスしたいと思います。のオブジェクトを作成し、MainActivityそのオブジェクトを使用して関数を呼び出しました。エラーはありませんが、実行されていません。実行しようとするたびに、アプリがクラッシュします。

4

3 に答える 3

34

アクティビティ A には変数が必要です

static ActivityA activityA;

onCreate 状態:

activityA = this;

このメソッドを追加します。

public static ActivityA getInstance(){
   return   activityA;
 }

アクティビティ B で、呼び出します

ActivityA.getInstance().myFunction(); //call myFunction using activityA
于 2013-02-19T11:35:36.053 に答える
18

以下を使用してアクティビティのオブジェクトを作成することはできません。

MyActivity activity = new MyActivity();

通常の Java クラスと同様です。Android のすべてのアクティビティは、有効なコンテキストが関連付けられるように、アクティビティのライフサイクルを通過する必要があります。

Activity を通常の Java クラスとして扱うと、null コンテキストになります。アクティビティのほとんどのメソッドはそのコンテキストで呼び出されるため、null ポインター例外が発生します。これがアプリのクラッシュの原因です。

代わりに、他のクラスから呼び出す必要があるすべてのメソッドを、コンストラクターで有効なコンテキストを受け入れる Utility クラスに移動し、メソッドでそのコンテキストを使用して作業を行います。

于 2013-02-19T11:14:10.307 に答える
0

変数を public にしてから、次のようにアダプターにオブジェクトを作成します。

public int i;  // Variable in Activity class

((ActivityName) context).i          // accessing in adapter 
于 2018-12-29T12:27:24.700 に答える