2013-01-08 15 views
12

Stringデータをfragmentからactivityに送信します。onAttachフラグメントからアクティビティへのコールバック

onAttachコールバックを使用して、アンドロイドデベロッパーでフラグメントとアクティビティの通信に関する記事を読んでいます。

誰でもデータをフラグメントからアクティビティに送信する方法を明確に説明できますか?

答えて

29

このようなことを行う必要があります。 OnClickListenerを実装してあなたのフラグメントで

OnViewSelected _mClickListener; 
@Override 
public void onAttach(Activity activity) { 
    super.onAttach(activity); 
    try { 
     _mClickListener = (OnViewSelected) activity; 
    } catch (ClassCastException e) { 
     throw new ClassCastException(activity.toString() + " must implement onViewSelected"); 
    } 
} 

とあなたのonClick()方法でこれを実行します。:

public interface OnViewSelected { 
public void onViewSelected(int viewId); 
} 

とあなたのonAttachには、次の操作を行います。まず、例えば、あなたの活動にcomunicateするために使用するインターフェイスを作成

@Override 
public void onClick(View v) { 
    _mClickListener.onViewSelected(456); 
} 

アクティビティの後で、作成したインターフェイスをあなたのフラグメントに実装する必要があります。実装されていないメソッドを追加するよう依頼し、あなたのアクティビティでは次のような機能を持ちます:

@Override 
public void onViewSelected(int data) { 
    Log.d("","data : "+data); // this value will be 456. 
} 

それだけです。 :)

+2

nice :)あなたが言うようにAndroid Frameworkが生成されます。そして、私は今それを明確に理解することができます – hqt

+0

なぜインターフェイスを作成するのですか?コンテキストctx(グローバル)を作成し、ctx =(YourActivity)アクティビティによってonAttach内で渡されたアクティビティをキャストしてから、ctx.onViewSelected(data)を使用して、アクティビティでonViewSelectedを作成しました。 – tony9099

+0

これはこれまでのところ最良の方法だと私の意見では、これを1つの 'Fragment'やたくさん使っても問題ありません。あなたの実装もうまくいきますが、私はもっとインターフェイスが好きです:) – hardartcore

関連する問題