【发布时间】:2017-11-02 21:58:06
【问题描述】:
在我的应用程序中,我有同一个片段 ActivityFragment 的多个实例。在每个片段中,都有一个activity_text 文本视图。将片段添加到布局时,我想在onCreate 期间在该片段中设置activity_text 文本视图。但是,当我尝试这样做时,屏幕上的每个 ActivityFragment 都会更改其 activity_text 文本视图。
有什么方法可以将setText 限制在单个片段的范围内,而无需为每个片段使用唯一的标签或 ID?
这是我的 ActivityFragment 类:
public static class ActivityFragment extends Fragment {
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable final ViewGroup container, Bundle savedInstanceState) {
final View fragment1 = inflater.inflate(R.layout.activity_fragment, container, false);
final TextView activityText = (TextView) fragment1.findViewById(R.id.activity_text);
//Calling setText changes the activityText Textview in every fragment onscreen
activityText.setText(text);
return fragment1;
}
}
这是我的 MainActivity 类:
public class MainActivity extends FragmentActivity {
Static String text;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
for (int i = 0; i != 5; i++) {
//This ensures each fragment receives a unique String
text = "success" + i;
ActivityFragment myFragment = new ActivityFragment();
getFragmentManager().beginTransaction()
.add(R.id.fragment_container, myFragment).commit();
}
}
}
【问题讨论】:
-
您能更具体地回答您的问题吗? “将 setText 限制在单个片段的范围内”到底是什么意思?您可以在 onDetach 上覆盖诸如 onAttach 之类的方法来处理片段被附加的那一刻。您还可以为每个片段通过 bundle 发送数据。这就是你想要的吗?
-
@VictorNeves 根据提供的答案,我应该通过 Bundle 将数据传递给片段。很抱歉这个令人困惑的问题。