12
我想將String
數據從fragment
發送到activity
。onAttach從片段到活動的回調
我已閱讀有關Android開發人員使用onAttach
回調進行片段和活動之間通信的文章。
任何人都可以清楚地解釋如何從片段發送數據到活動?
我想將String
數據從fragment
發送到activity
。onAttach從片段到活動的回調
我已閱讀有關Android開發人員使用onAttach
回調進行片段和活動之間通信的文章。
任何人都可以清楚地解釋如何從片段發送數據到活動?
你應該這樣做。首先創建一個將使用與您例如活動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.
}
就是這樣。 :)
不錯:) Android Framework生成就像你說的。我現在可以明白地理解它 – hqt
爲什麼要創建一個接口?難道你不能僅僅創建一個上下文ctx(全局),並通過ctx =(YourActivity)活動將它傳遞給onAttach內部的活動,然後使用ctx.onViewSelected(data)給出您在Activity中創建的onViewSelected中的課程。 – tony9099
因爲在我看來這是迄今爲止最好的方式,如果我在一個'Fragment'中使用它或無關緊要,這並不重要。您的實現也可以,但我更喜歡接口:) – hardartcore