【发布时间】:2015-02-19 13:55:39
【问题描述】:
我有一个带有片段的活动,其中包含用户输入的不同视图。 每当此片段发生更改时,视图似乎都不会更新,如下面的屏幕截图所示。
我还试图使视图无效。我错过了什么?
public class EventGeneralFragment extends Fragment {
protected TextView _timeStartView;
protected TextView _timeEndView;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
super.onCreateView(inflater, container, savedInstanceState);
// Inflate the layout for this fragment
View view = inflater.inflate(R.layout.fragment_event_general, container, false);
_timeStartView = (TextView) view.findViewById(R.id.textViewStart);
_timeEndView = (TextView) view.findViewById(R.id.textViewEnd);
View.OnClickListener timeClickListener = new View.OnClickListener() {
@Override
public void onClick(View v) {
showTimePickerDialog((TextView) v);
}
};
_timeStartView.setOnClickListener(timeClickListener);
_timeEndView.setOnClickListener(timeClickListener);
return view;
}
public void showTimePickerDialog(final TextView caller) {
int hour = 18;
int minute = 0;
TimePickerDialog dialog = new TimePickerDialog(getActivity(), new TimePickerDialog.OnTimeSetListener() {
@Override
public void onTimeSet(TimePicker view, int hourOfDay, int minute) {
// ...
}
}, hour, minute, DateFormat.is24HourFormat(getActivity()));
dialog.show();
// Enforce repainting
View view = getView();
if (view != null) {
view.invalidate();
}
}
}
public class CreateActivity extends ActionBarActivity {
public enum FragmentType {
General,
EventRestriction
}
protected EventGeneralFragment _eventGeneralFragment;
protected EventRestrictionFragment _eventRestrictionFragment;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_create);
_eventGeneralFragment = new EventGeneralFragment();
getFragmentManager().beginTransaction().replace(R.id.fragment, _eventGeneralFragment).commit();
}
}
【问题讨论】:
-
看起来您在同一个容器中有多个片段
-
你可能是对的,onCreateView方法被调用了两次。
-
activity_create.xml的内容是什么?
-
片段也被添加到那里...谢谢大家:)
-
可以用frame layout代替fragmnet,替换framelayout。