2013-01-08 166 views
12

我想將String數據從fragment發送到activityonAttach從片段到活動的回調

我已閱讀有關Android開發人員使用onAttach回調進行片段和活動之間通信的文章。

任何人都可以清楚地解釋如何從片段發送數據到活動?

回答

29

你應該這樣做。首先創建一個將使用與您例如活動comunicate接口:

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

,並在您onAttach做到這一點:

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"); 
    } 
} 

在您的片段實施OnClickListener並在onClick()方法做到這一點:

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

之後,在你的Activity中,你必須實現你在Fragment中創建的接口,它會要求你添加未實現的方法,並在你的活動中,你將有這樣的功能:

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

就是這樣。 :)

+2

不錯:) Android Framework生成就像你說的。我現在可以明白地理解它 – hqt

+0

爲什麼要創建一個接口?難道你不能僅僅創建一個上下文ctx(全局),並通過ctx =(YourActivity)活動將它傳遞給onAttach內部的活動,然後使用ctx.onViewSelected(data)給出您在Activity中創建的onViewSelected中的課程。 – tony9099

+0

因爲在我看來這是迄今爲止最好的方式,如果我在一個'Fragment'中使用它或無關緊要,這並不重要。您的實現也可以,但我更喜歡接口:) – hardartcore