2017-02-08 6 views
0

私はこの問題を2日間苦労しています。私はActivityAからActivityBの方法を使用する必要がある状況にあります。インスタンス化せずにアクティビティコンテキストを取得していますか?

activityA = this; 

と、この方法を追加::ActivityB

public static ActivityA getInstance(){ 
    return activityA; 
} 

、コールをonCreate状態で

static ActivityA activityA; 

:問題は、私のような多くのソリューションを試してみましたが、Aのコンテキストを取得して産みます

ActivityA.getInstance().myFunction(); //call myFunction using activityA 

これは、コンテキストにAを渡すためにActivityAをインスタンス化する必要があるため、機能しませんでしたが、私の場合は、アクティビティを切り替えることなくアクティビティのコンテキストを取得する方法はありません。 私の質問は、あなたは、クラスBを使用してエクステントクラスAのonCreateで単に

OR

public static ActivityA activityA; 

をできる単純なまたは直感的であることが判明するが、このコンセプトに新しいイム、事前に感謝

+1

アクティビティクラスと両方のアクティビティからコンテキストと必要なパラメータを渡すことで、両方のアクティビティから使用できます。アクティビティAのオブジェクトを作成し、アクティビティBのコンテキストを渡してメソッドを呼び出します。 –

+0

@ChetanJoshi簡単なコード例はありますか?私が使用したいメソッドとインターフェースを作ろうとしましたが、クラスwheで実装しました私はそれを使用したいが、私は私がこの場合にはできないそのコンテキストを渡すためにメソッドを含むアクティビティに切り替える必要がある状況で終わった – ibrahim

+0

私の答えを確認してください –

答えて

0

をあなたがアクセスすることができますメソッド。 あなたは、このよう

public class BaseActivity extends Activity 
{ 
    public void myFunction() 
{ 
    ... 
} 
} 

それを行うと、他の活動のためにこれを行うことができます:あなたは、あなたが任意の非にそのメソッドを宣言しなければなりません活動Bからの活動Aから任意のメソッドを呼び出したい場合は

public class ActivityA extends BaseActivity 
{ 
public void someMethod() 
{ 
    myFunction(); // you can call function here directly 
} 
} 
+0

これは私のために働いてくれてありがとう – ibrahim

0

かもしれません状態:

{ 
activityA = this; 
} 

のonCreate

public myFunction{ 
} 

とActivityBコールここで

activityA.myFunction(); 
+0

返信いただきありがとうございますアプリケーションはAのアクティビティに切り替えることはありません(BはAではない起動によって開かれます)onCreateは呼び出されませんので、コンテキストはB、他のソリューションに渡されませんか? – ibrahim

+0

クラスBを使用してクラスAをエクステントできるのは、単に – g7pro

0

に私は2つのクラスが活動として考えてみて作成され、その後、クラスActivity_Aに公開methodA() 1を作成し、その後、クラスActivity_Bを作成し、methodB()を作成し、Activity_Aのオブジェクトを作成し、アクティビティActivity_Bのコンテキストを渡すことによってmethodA()が呼び出されました。

 class Activity_A{ 
      public void methodA(Context context){ 
       Toast.makeText(context,"methodA",Toast.LENGTH_LONG).show(); 
      } 
     } 

     class Activity_B{ 
      public void methodB(){ 
       Activity_A activity_a = new Activity_A(); 
       activity_a.methodA(Activity_B.this); 
      } 
     } 
+0

でした。残念ながら、この行ではNullPointerExceptionが返されました:activity_a.methodA(Activity_B.this); – ibrahim

+0

Activity_AのContextを使用するActivity_Aのメソッドのビューまたはサブメソッドを使用している場合は、そのメソッドが呼び出されます。 Actvity_B。 –

+0

あなたの質問にあなたのメソッドを追加してください。その明確に、あなたは何をしたいですか? –

0

2つのオプションがあります。

1)共有方法

OR

2にstaticキーワードを追加しますが)あなたは反射を試すことができます。参考のため

リンクは、次のとおりです。あなたは、両方の活動に共通の機能を持つようにしたいと、あなたはBaseActivityextends Activityことを作成し、その中にあなたの方法を定義し、BaseActivityによってActivityAActivityBを拡張することができ What is reflection and why is it useful?

関連する問題