2017-05-07 7 views
-1

私は2つ持っていますActivitiesです。インテントの呼び出しアクティビティのオブジェクトを取得する方法は?

私は私のFirstActivitySecondActivityを持って、私はこのような二つ目に最初から私をもたらし最初のアクティビティからIntentを起動します。今、私は2番目の私のFirstActivityInstanceが必要

startActivity(new Intent(FirstActivity.this, SecondActivity.class)); 

アクティビティ。私の作業のアプローチは、私のFirstActivityで静的インスタンスをした:

private static FirstActivity firstActivity; 

onCreate(...) { firstActivity = this; } 

public static FirstActivity get() { return firstActivity; } 

このもののInstantRunを破壊され、メモリリークと考えられています。私はParcelableをインテントで送信できることを知っていますが、私はFirstActivityオブジェクトが必要です。

+1

「今、私は2番目の活動における私のFirstActivityのインスタンスを必要とする」 - なぜあなたはそれを思いますか?私はあなたが解決しようとしている問題が何であれ、より良い解決策があることを保証します。 – CommonsWare

+0

@CommonsWare私はそれも考えましたが、私は両方のアクティビティで同じ 'onCreateOptionsMenu()'と 'onPrepareOptionsMenu()'メソッドを持っていますので、コードを2回書くのではなく、 'firstActivity.onCreateOptionsMenu()'関数の2番目のアクティビティで – creativecreatorormaybenot

+0

なぜそのインスタンスが必要ですか?あなたはできない! –

答えて

2

このため、一般的な解決策が継承である:

ステップ#1:あなたが今

ステップ#2(ActivityAppCompatActivity、など)を使用しているものは何でもから延びBaseActivityクラスを作成しますがありますFirstActivityBaseActivity

ステップ#3を拡張:BaseActivity

FirstActivityから onCreateOptionsMenu()onPrepareOptionsMenu()方法を動かし

ステップ#4:SecondActivityBaseActivity

を延長したことがあり別のオプションは、これらの静的メソッドは、FirstActivitySecondActivityonCreateOptionsMenu()onPrepareOptionsMenu()によって呼び出される共通コード・ビットの静的ユーティリティメソッドを使用することであろう。

+0

ありがとうございました。私はいつもその結論に至りましたが、あなたは本当にここで私を助けました! – creativecreatorormaybenot

-1

//first activity 
 

 
       Bundle bundle = new Bundle(); 
 
       bundle.putSerializable("TAG", object); 
 
     
 
       Intent intent = new Intent(getApplicationContext(), ActivityB.class).putExtras(bundle);} 
 
       startActivity(intent); 
 
       
 
//second activity 
 

 
onCreate()..... 
 
     Bundle bundle = getIntent().getExtras(); 
 
     if(bundle!=null){ 
 
      
 
      Object object = (Object) bundle.get("TAG"); 
 

 
//and implements serializable in your class object

+0

私は 'Serializable'を解析したくありません。 @ CommonsWareのソリューションは私を助けた。 – creativecreatorormaybenot

関連する問題