我在 Android 应用程序中有 1 个带有 2 个片段的活动。在第一个片段上,我确实放了一个按钮(btnA)。第二次我放了一个 TextView (txtB)。
如何通过按下第一个活动上的按钮在第二个片段的 TextView 中设置文本?
谢谢,我是android应用程序开发的新手
约斯克XP
我在 Android 应用程序中有 1 个带有 2 个片段的活动。在第一个片段上,我确实放了一个按钮(btnA)。第二次我放了一个 TextView (txtB)。
如何通过按下第一个活动上的按钮在第二个片段的 TextView 中设置文本?
谢谢,我是android应用程序开发的新手
约斯克XP
遵循此处描述的 Android 最佳实践。
这比 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);
}
}
在 Activity 中创建一个公共方法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
}
}
那么你可以做这样的事情:
在您的活动中,提供两个片段的公共链接:
public FragmentNumberOne getFragmentOne() {
return fragOne;
}
public FragmentNumberTwo getFragmentTwo() {
return fragTwo;
}
然后在片段一TextView
的Fragment
类中提供访问器:
public TextView getTextView() {
return mTextView;
}
然后在您的原件中Fragment
您可以使用:
((MyActivity)getActivity()).getFragmentOne().getTextView().setText("Hello");