2017-07-30 11 views
1

アクティビティA、アクティビティB、アクティビティCの3つのアクティビティがあります。アクティビティAはランチャアクティビティです。この活動から、私は活動Bに行きます。アンドロイドの親と子のアクティビティのやりとり方法

活動Bと活動Cの定義は次のとおりです。今、私は活動のCにおけるいくつかのタスクの完了後に活動Bで何かをしたい

public class B extends C 
public abstract class C extends BaseActivity 

。私はgoogleとstackoverflowで検索しました。 This leads me to this answer.

上記の答えに続いて、関数stateChanged()の呼び出しには多くの時間がかかります。これを行うより速い方法がありますか?

答えて

0

あなたはすべてのB活動がC活動でタスクアクティビティC

1

で行われたときにアクティビティBにイベントを発生するEventBusライブラリを使用することができます。あなたがいる場合

@Override 
protected void method(){ 
    super.method(); 
    myTaskAfterSuperMethodReturns(); 
} 

を:メソッドは公共または保護それともパッケージプライベートである、すなわち、あなたが同じパッケージにBで継承されているCでメソッドを定義するのであれば、次のようにメソッドをオーバーライドいくつかの非同期タスクをよりよく実行すると、クラスBで非同期タスクを定義することができます。のdoSomethingを抽象メソッドとして定義してBに実装する方法があります。あなたの仕事が完了したらdoSomethingに電話してください。 doSomething抽象化すると、それを実装するためにはBが強制されます。あなたも、このような別のActivityからMainActivityのメソッドにアクセスすることができます

-1

MainActivity.class

private static MainActivity mInstance; 

public static MainActivity getInstance(){ 
    return mInstance; 
} 

のonCreateメソッドでは、中に使用するメソッドを作成

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    mInstance = this; 
} 

インスタンスを初期化します次の活動

はないスーパークラスはサブクラスに依存するであろう、それだけでその後別のアクティビティ

(MainActivity.getInstance()).showData() 
+0

から呼び出すアクセスするには? –

+0

それは断片間の通信に役立つでしょう –

+0

OP明確に状況を述べた。その文脈で答えることを検討してください。 –

関連する問題