Есть такой код фрагмета:
public class FragmentSettings extends Fragment {
@Bind(R.id.settings_layout) LinearLayout settingsLayout;
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View v = (ViewGroup) inflater.inflate(R.layout.fragment_settings, null);
ButterKnife.bind(this, v);
settingsLayout.addView(IconTextView.create(
getResources().getDrawable(R.drawable.settings_profile),
"Profile data",
getActivity(),
new View.OnClickListener() {
@Override
public void onClick(View v) {
startActivity(new Intent(getActivity(),
ProfileSettingActivity.class));
}
}
));
settingsLayout.addView(IconTextView.create(
getResources().getDrawable(R.drawable.settings_notifications),
"Notifications",
getActivity(),
new View.OnClickListener() {
@Override
public void onClick(View v) {
startActivity(new Intent(getActivity(),
NotificationSettingActivity.class));
}
}
));
return v;
}
....
public class IconTextView extends FrameLayout{
private static int res = R.layout.settings_element;
public IconTextView(Context context) {
super(context);
}
public static IconTextView create(Drawable icon, String text, Context context, OnClickListener listener) {
IconTextView view = new IconTextView(context);
View content = ((LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE)).inflate(res, view, false);
((ImageView) content.findViewById(R.id.icon)).setImageDrawable(icon);
((TextView) content.findViewById(R.id.setting_title)).setText(text);
view.addView(content);
view.setOnClickListener(listener);
return view;
}
}
setting_element layout:
Состояние при первом запуске:
Состояние после появления бага:
Если открыть другую Активити, а потом вернуться в этот фрагмент, ВСЕ пункты настроек отображают текст последнего пункта. Если убрать Тест (как на скриншоте), то оба пункта будут Notifications.
Факты:
1. В конце работы onCreateView текст правильный в обоих случаях, вероятно баг происходит где-то в районе fragment.onStart или onDestroy
2. Если у title фрагмента ("Settings") поставить id "setting_title", то он тоже меняет свой текст на текст последнего пункта настроек.
3. До этого вместо кастомного view юзал include и забивал текст в методе фрагмента - результат тот же, баг появлялся.
4. ButterKnife не виноват, без него баг тоже появляется
5. С иконками при этом все в порядке, хотя вызываются они тем же способом