簡単のため:活性= [A]、フラグメント1 = [B]、及びフラグメント2 = [C]
ステップ1:[B]はIOnInitiate[C]Listener
と呼ばれる内部インタフェースを作成し、そのインターフェース内に作成メソッドvoid Initiate[C]();
と呼ばれます。
ステップ2:IOnInitiate[C]Listener
の[B]内にプライベートプロパティを作成し、(your-prefix-convention)OnInitiate[C]Listener
とします。
工程3:[B] public void SetInitiate[C]Listener(Activity activity)
と呼ば内パブリックメソッドを作成し、ステップで作成された私有地にactivity
パラメータをキャスト2.
ステップ4:[A] がインタフェースを実装する必要があり[B].IOnInitiate[C]Listener
とメソッドpublic void Initiate[C]()
。
ステップ5:[A]から、[B]の新しいインスタンスを作成するたびに、ステップ3のメソッドを呼び出して、アクティビティパラメータとしてthis
を渡してください。それ以外の場合は、null例外が発生します。
ステップ6:[B]から[C]を開始する必要があるときは、[B]のプライベートプロパティからインターフェイスメソッドを呼び出すだけです。例:(prefix)OnInitiate[C]Listener.Initiate[C]();
これは私の見た目です。開発にはC#を使用しているため、構文が異なる場合があります。
public class A : Activity, B.IOnInitiateCListener
{
private void InitiateB()
{
B b = new B();
b.SetInitiateCListener(this);
b.Show(FragmentManager, "B");
}
public void InitiateC()
{
C c = new C();
c.Show(FragmentManager, "C");
}
}
public class B : Fragment
{
public interface IOnInitiateCListener
{
void InitiateC();
}
private IOnInitiateCListener _IOnInitiateCListener;
public void SetInitiateCListener(Activity activity)
{
_IOnInitiateCListener = (IOnInitiateCListener)activity;
}
private void InitiateC()
{
_IOnInitiateCListener.InitiateC();
}
}