我在Android應用程序中有2個片段的活動。 在第一個片段上,我放了一個按鈕(btnA)。 第二次我推出了一個TextView(txtB)。Android片段互動
如何通過按下第一個活動上的按鈕來在第二個片段的TextView中設置文本?
THX,我是新來的Android應用程序開發
JoskXP
我在Android應用程序中有2個片段的活動。 在第一個片段上,我放了一個按鈕(btnA)。 第二次我推出了一個TextView(txtB)。Android片段互動
如何通過按下第一個活動上的按鈕來在第二個片段的TextView中設置文本?
THX,我是新來的Android應用程序開發
JoskXP
那麼你可以做這樣的事情:
在您的活動,提供公共鏈接到這兩個片段:
public FragmentNumberOne getFragmentOne() {
return fragOne;
}
public FragmentNumberTwo getFragmentTwo() {
return fragTwo;
}
然後提供存取到TextView
在Fragment
類片段之一:
public TextView getTextView() {
return mTextView;
}
,並在原始Fragment
那麼你可以使用:
((MyActivity)getActivity()).getFragmentOne().getTextView().setText("Hello");
繼Android的最佳實踐描述here。
這比Graeme的解決方案略爲冗長,但允許重複使用您的片段。 (你可以在另一個屏幕使用FragmentWithButton,按鈕可以做不同的事情)
你有兩個片段(FragmentWithButton
和FragmentWithText
)和一個活動(MyActivity
)
創建接口FragmentWithButtonHost
在FragmentWithButton
:
public class FragmentWithButton extends Fragment {
FragmentWithButtonHost host;
public interface FragmentWithButtonHost{
public void onMyButtonClicked(View v);
}
@Override
public void onAttach(Activity activity) {
super.onAttach(activity);
try {
host = (FragmentWithButtonHost) activity;
}
catch (ClassCastException e) {
// TODO Handle exception
}
}
/**
* Click handler for MyButton
*/
public void onMyButtonClick(View v) {
host.onMyButtonClicked(v);
}
}
創建中FragmentWithText
公共方法設置從該活動的文字:
public class FragmentWithText extends Fragment{
...
public void setText(String text) {
// Set text displayed on the fragment
}
}
確保您的活動實現了FragmentWithButtonHost
接口,並調用setText
方法:
public MyActivity implements FragmentWithButtonHost {
...
@Override
public void onMyButtonClicked(View v) {
getFragmentWithText().setText("TEST");
}
public FragmentWithText getFragmentWithText() {
// Helper method to get current instance of FragmentWithText,
// or create a new one if there isn't any
}
}
這裏瞭解片段http://marakana.com/s/post/1250/android_fragments_tutorial –
http://developer.android.com/training/basics/fragments/communicating.html –
閱讀那裏,示例文章是前實際上你問的是什麼! [在Android中使用片段 - 教程](http://www.vogella.com/articles/AndroidFragments/article.html) – Megamind