合計初心者はここにあります。断片化から断片化までのコミュニケーション - インターフェイスが本当に必要なのはなぜですか?
私が理解しているように、フラグメントは、他の状況で独立していて再利用可能な方法として、ホスティング活動を通じて互いに通信する必要があります。
これは、フラグメント内のインターフェイスを宣言し、それらをアクティビティに実装することで行う必要があります。 アクティビティがそのコミュニケーションの準備が整っていることを確認することができます(実際にコミュニケーションを処理する方法があります)。
私は、インターフェイス(とそのことについては、java /アンドロイドの他の多くのもの)の周りに私の頭をラップするのは苦労している、これはインターフェイスなしで行うことができますか?フラグメント内のホスティングアクティビティへの参照を取得し、そのアクティビティのメソッドを呼び出すことができますか?
(フラグメントクラス)
Activity activity = getActivity();
activity.doThatThingToOtherFrag(String myString);
(アクティビティクラス)
Fragment otherFragment = getSupportFragmentManager().findFragmentById(R.id.myOtherFrag);
public void doThatThingToOtherFrag(String string) {
//do something to myOtherFrag
}
または私は届かない。この場合、インタフェースを実装について何か他のものはありますか?
* EDIT *
のは、私は別のアクティビティにそのフラグメントを再利用しましょう。その活動もdoThatThingToOtherFrag(文字列のmyString)メソッドを持っている限り、私はgetActivity(を通してそれへの参照を取得することができます)、まだ右、私のフラグメントからactivity.doThatThingToOtherFrag(文字列のmyString)を呼びますか?私はフラグメントコードで何かを変更する必要はありません - または私はここで何かを逃していますか?
私の質問は、次のようなものでなければなりません。/ /任意のホスト活動がdoThatThingToOtherFragメソッドを実装していることを確認するためのインターフェイスですか?あるいは、私はこのような状況でインタフェースについて知らない何か他のものがありますか?助けてくれてありがとう!
うまくいけば、あなたは 'Activity'ではなく' MyActivity'であり、あなたのメソッドは '((MyActivity)activity).doThatThing'のようになります。つまり' doThatThing'は ' MyActivity'はあなたがMyActivityに密接に結合する必要があるでしょう。 – trooper
...インターフェイスにプログラミングしない限り、毎回このキャストを変更する必要があります。アクティビティ(サブクラスではない)を扱う場合、インターフェイスには何のポイントもありませんが、 'doThatThing'はあなたが書いたメソッドであり、あなたの' Activity'ベースクラスにはまだ属していません。 – trooper
私はActivityのサブクラス( 'FragmentActivity'など)を単に'(Activity) 'にキャストできると思っていました。doThatThingメソッドがある限り、フラグメントコードで何も変更する必要はありません。 –