2017-02-18 14 views
0

の私のインターフェイスを持つフラグメントで実装することができ、私は次のようなフラグメントのインターフェイス作成:どのように私は別のフラグメント

public interface SGFCallBackInterface { 
    void itemSelected(Item item); 
} 

private SGFCallBackInterface mCallbackInterface; 

@Override 
public void onAttach(Context context) { 
    super.onAttach(context); 

    if (context instanceof SGFCallBackInterface) { 
     mCallbackInterface = (SGFCallBackInterface) context; 
    } else { 
     throw new RuntimeException(context.toString() + " must implement SelectGdsFragment.SGFCallBackInterface"); 
    } 
} 

public void setSGFCallBackInterface(SGFCallBackInterface mCallbackInterface) { 
    this.mCallbackInterface = mCallbackInterface; 
} 

を、私は以下の

public class SaleMenageFragment extends Fragment implements SelectGdsFragment.SGFCallBackInterface { 

    ... 

    SelectGdsFragment selectGdsFragment = new SelectGdsFragment(); 
    selectGdsFragment.setSGFCallBackInterface(SaleMenageFragment.this); 

    ... 

} 

@Override 
public void onItemSelected(Item item) { 
    ... 
} 

のように別のフラグメントのそれを実装しますしかし、それはまだ動作していないですが、これはエラーログです:

E/AndroidRuntime: FATAL EXCEPTION: main 
       Process: com.leo.test, PID: 3853 
       java.lang.RuntimeException: [email protected] must implement SelectGdsFragment.SGFCallBackInterface 
        at com.leo.test.Control.Fragment.SaleManagement.SelectGdsClsFragment.onAttach(SelectGdsFragment.java:42) 
        at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1019) 
        at android.support.v4.app.BackStackRecord.setLastIn(BackStackRecord.java:779) 
        at android.support.v4.app.BackStackRecord.calculateFragments(BackStackRecord.java:819) 
        at android.support.v4.app.BackStackRecord.run(BackStackRecord.java:660) 
        at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1617) 
        at android.support.v4.app.FragmentManagerImpl$1.run(FragmentManager.java:517) 
        at android.os.Handler.handleCallback(Handler.java:739) 
        at android.os.Handler.dispatchMessage(Handler.java:95) 
        at android.os.Looper.loop(Looper.java:135) 
        at android.app.ActivityThread.main(ActivityThread.java:5254) 
        at java.lang.reflect.Method.invoke(Native Method) 
        at java.lang.reflect.Method.invoke(Method.java:372) 
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903) 
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698) 

私は、エラー・ログが私の引を意味だと思いますxActivityはSelectGdsFragment.SGFCallBackInterfaceを実装していません。

しかし、私はIndexActivityでそれを実装したくありません。
私はそれをSaleMenageFragmentに実装したいと思います。

どうすればいいですか?

+0

Floem、ありがとうございます! XDDD – Leo

答えて

0

私はあなたがドキュメント

Communicating with Fragments

を参照してくださいあなたの Activity

でそれを実装する必要が怖いです

希望すると助かります!

+0

私はそれを得た!どうもありがとう !! – Leo

+0

それが助けてくれてうれし! :) –

+0

参照リンク:http://simpledeveloper.com/how-to-communicate-between-fragments-and-activities/ – Leo

0

ただ、このようなONATTACH(コンテキストコンテキスト)メソッドでは一部を削除します。

public interface SGFCallBackInterface { 
    void itemSelected(Item item); 
} 

private SGFCallBackInterface mCallbackInterface; 

@Override 
public void onAttach(Context context) { 
    super.onAttach(context); 

    if (context instanceof SGFCallBackInterface) { 
     mCallbackInterface = (SGFCallBackInterface) context; 
    } // this wont throw an exception if the activity does not implement that interface 
} 

public void setSGFCallBackInterface(SGFCallBackInterface mCallbackInterface) { 
    this.mCallbackInterface = mCallbackInterface; 
} 
+0

申し訳ありませんが、それは動作しません。どうも !! – Leo

関連する問題