0

DialogFragmentは私のMainActivityとの共同作業に成功しました。それはこれまでのところ2つの異なるアクティビティから呼び出されたDialogFragmentでは、このケースの呼び出しアクティビティにどのようにキャストし直しますか?

((MainActivity)getActivity()).doPositiveClick() 

でとても良い活動のdoPositiveClick()メソッドを呼び出しますが、今はSecondActivityと同じDialogFragmentを再利用したいと思います。私は上記の行の構文を試しましたが、MainActivityMainActivityまたはSecondActivityと表すことができるもの(DialogFragment)に置き換える方法がまだ見つかりませんでした。私は両方のアクティビティにdoPositiveClick()のインタフェースを実装していましたが、依然として私の要求を満たすために適切な構文にぶつかっていません。

私にはっきりさせてください:私ははいかない質問をしています。上記の行を調整することができますので、インターフェイスにListenerを含める必要はありませんか?はい、どうですか?いいえ、十分に公正。

+0

私はインターフェイスを使用するのが最善の方法だと言います。私が考えることができる唯一の他の方法は 'instanceof'とif文を使うことです。しかし、両方のアクティビティでインターフェイスを実装することは妥当と思えます。それに対して何らかの理由がありますか? –

+0

私の質問はキャスティングについてです。私は、この状況で適切にキャストする方法があるかどうかを知りたいので、全く新しいインターフェースを持たずにはるかに効率的な実装ができます。 – Reg

答えて

1

インターフェイスは、フラグメントのアクティビティ(と反対ではありません。)と通信するためのベストプラクティスです。 親アクティビティでインターフェイスを実装して、主なアクティビティとセカンダリアクティビティの子を作成することができます。だからあなたは実装する必要はありません。メソッドをオーバーライドできます。どのアクティビティがフラグメントを作るか、そのアクティビティオーバーライドメソッドはフラグメントコール時にトリガします。本当にあなたの問題を理解し、真に答えてくれることを願っています。どんな質問でもコメントしてください。だから私はコメントを介して答えることができますまた、私は私の答えを編集することができます。

更新::あなたのフラグメントonAttachメソッドでは、このフラグメントを作成するアクティビティのインスタンスを制御できます。これがあなたを満足させることを願っています。

@Override 
    public void onAttach(Activity activity) { 
     super.onAttach(activity); 
     if (activity instanceof MainActivity) ... 
     if (activity instanceof SecondActivity) ... 
    } 
+0

私は、与えられた行の適切なキャスティング(「はい」または「いいえ」の回答)によって実際の解決策を作り出すことができるかどうかを知りたいと思います。私の質問は、この特定の問題の解決策よりも、キャスティングと関連があります。しかし、私は、あなたが提案している動機の中で、ParentActivityのMainActivityとSecondActivityの子を作ることは、与えられた行で 'MainActivity'を' ParentActivity'に変更できるということを意味します。誰かが新しいクラスやインターフェースを持たずに動作するキャストを提案しない限り、私はあなたの答えを受け入れます。 – Reg

+0

私ははい、いいえのように答えたいですが、私はあなたが本当に尋ねるものを確認する必要があります。しかし、あなたのコメントの後、私はあなたが望むように答えることができます。 **はい** :)答えを確認してください。更新されました。 –

関連する問題