Я реализовал GuidedStepFragment в своем приложении для Android TV.Существует один шаг (фрагмент), который позволяет пользователю изменить настройку отображения времени.(12-часовой или 24-часовой формат)
Я получаю ранее сохраненное предпочтение от SharedPreferences и устанавливаю проверенное управляемое действие, однако, первое управляемое действие фокусируется, а не проверяется.(См. Снимок экрана ниже.) Что мне нужно сделать, чтобы сфокусировать проверенное управляемое действие?
Вот код, который я использую:
public class GuidedStepActivity extends Activity {
private static final int ENABLED_12_HOUR_CLOCK = 0;
private static final int DISABLED_12_HOUR_CLOCK = 1;
private static final int DONE = 99;
private static final int OPTION_CHECK_SET_ID = 10;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if (null == savedInstanceState) {
GuidedStepFragment.addAsRoot(this, new TimeFormatSelectionFragment(), android.R.id.content);
}
}
private static void addCheckedAction(List<GuidedAction> actions, long id,
String title, String desc, boolean checked) {
GuidedAction guidedAction = new GuidedAction.Builder()
.id(id)
.title(title)
.description(desc)
.checkSetId(OPTION_CHECK_SET_ID)
.build();
guidedAction.setChecked(checked);
actions.add(guidedAction);
}
private static void addAction(List<GuidedAction> actions, long id, String title, String desc) {
actions.add(new GuidedAction.Builder()
.id(id)
.title(title)
.description(desc)
.build());
}
public static class TimeFormatSelectionFragment extends GuidedStepFragment {
private UserData mUserData;
@Override
public void onViewCreated(View v, Bundle savedInstanceState) {
super.onViewCreated(v, savedInstanceState);
mUserData = UserData.getInstance(getContext());
updateActions();
}
@Override
@NonNull
public GuidanceStylist.Guidance onCreateGuidance(Bundle savedInstanceState) {
String title = getString(R.string.guided_step_12_hour_clock_title);
String description = getString(R.string.guided_step_12_hour_clock_description);
return new GuidanceStylist.Guidance(title, description, "", null);
}
@Override
public int onProvideTheme() {
return R.style.Theme_Example_Leanback_GuidedStep_First;
}
@Override
public void onCreateActions(@NonNull List<GuidedAction> actions, Bundle savedInstanceState) {
if (getActivity() instanceof GuidedStepActivity) {
addCheckedAction(actions, ENABLED_12_HOUR_CLOCK,
getResources().getString(R.string.guided_step_12_hour_clock_enabled),
getResources().getString(R.string.guided_step_12_hour_clock_enabled_description),
false);
addCheckedAction(actions, DISABLED_12_HOUR_CLOCK,
getResources().getString(R.string.guided_step_12_hour_clock_disabled),
getResources().getString(R.string.guided_step_12_hour_clock_disabled_description),
false);
addAction(actions, DONE,"Done", "");
}
}
@Override
public void onGuidedActionClicked(GuidedAction action) {
if (action.getId() == ENABLED_12_HOUR_CLOCK) {
mUserData.setDisplayTimeIn12HourClock(true);
}
else if (action.getId() == DISABLED_12_HOUR_CLOCK) {
mUserData.setDisplayTimeIn12HourClock(false);
}
else {
getActivity().finish();
}
}
private void updateActions() {
boolean isDisplayTimeIn12HourClock = mUserData.isDisplayTimeIn12HourClock();
GuidedAction action;
if (isDisplayTimeIn12HourClock) {
action = findActionById(ENABLED_12_HOUR_CLOCK);
}
else {
action = findActionById(DISABLED_12_HOUR_CLOCK);
}
action.setChecked(true);
}
}
}