Код: Выделить всё
public class FR_Options extends Fragment implements View.OnClickListener {
/*
String specifying the language of the App
*/
public static final String LANGUAGE_GERMAN = "German";
public static final String LANGUAGE_ENGLISH = "English";
//Set the default language to GERMAN
public static String currentLanguageOfTheApp = LANGUAGE_ENGLISH;
public FR_Options() {
// Required empty public constructor
}
public static FR_Options newInstance(String param1, String param2) {
FR_Options fragment = new FR_Options();
return fragment;
}
@RequiresApi(api = Build.VERSION_CODES.JELLY_BEAN_MR1)
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
private FragmentOptionsBinding binding;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
binding = FragmentOptionsBinding.inflate(inflater, container, false);
return binding.getRoot();
}
@Override
public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
binding.imageButtonGermany.setOnClickListener(this);
binding.imageButtonUK.setOnClickListener(this);
if(currentLanguageOfTheApp.equals(LANGUAGE_ENGLISH)) {
binding.textViewCurrentLanguageValue.setText(LANGUAGE_ENGLISH);
binding.imageButtonGermany.setAlpha(0.5f);
binding.imageButtonUK.setAlpha(1.0f);
}
if(currentLanguageOfTheApp.equals(LANGUAGE_GERMAN)) {
binding.textViewCurrentLanguageValue.setText(LANGUAGE_GERMAN);
binding.imageButtonGermany.setAlpha(1.0f);
binding.imageButtonUK.setAlpha(0.5f);
}
}
public void onDestroyView() {
super.onDestroyView();
binding = null;
}
@RequiresApi(api = Build.VERSION_CODES.JELLY_BEAN_MR1)
@Override
public void onClick(View view) {
if(view.getId() == R.id.imageButtonGermany) {
/*
Set the language to "German" for other fragments and database queries
*/
this.currentLanguageOfTheApp = LANGUAGE_GERMAN;
/*
Set the language to "German" for the XML-layout files
*/
Locale locale;
locale = new Locale("de", "DE");
Configuration config = new Configuration(getActivity().getBaseContext().getResources().getConfiguration());
Locale.setDefault(locale);
config.setLocale(locale);
getActivity().recreate();
getActivity().getBaseContext().getResources().updateConfiguration(config,
getActivity().getBaseContext().getResources().getDisplayMetrics());
}
if(view.getId() == R.id.imageButtonUK) {
/*
Set the language to "English" for other fragments and database queries
*/
this.currentLanguageOfTheApp = LANGUAGE_ENGLISH;
/*
Set the language to "English" for the XML-layout files
*/
Locale locale;
locale = new Locale("en", "EN");
Configuration config = new Configuration(getActivity().getBaseContext().getResources().getConfiguration());
Locale.setDefault(locale);
config.setLocale(locale);
getActivity().recreate();
getActivity().getBaseContext().getResources().updateConfiguration(config,
getActivity().getBaseContext().getResources().getDisplayMetrics());
}
}
}
Код: Выделить всё
public class Test extends Fragment {
int widthDisplay;
int heightDisplay;
private FragmentTestBinding binding;
private ConstraintLayout constraintLayout;
ConstraintSet constraintSet ;
private boolean fragmentViewHasBeenCreated = false;
int helpUpdateCounterProgressBar = 0;//Just for testing
boolean animationIsWindBladRotating = false;
private boolean sunIsShiningForImagewViews = false;
private boolean helpSolarGameRectangleCorrectlyCaughtPreviously = false;
public Test() {
// Required empty public constructor
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
binding = FragmentTestBinding.inflate(inflater, container, false);
WindowManager wm = (WindowManager) getActivity().getWindowManager();
Display display = wm.getDefaultDisplay();
Point size = new Point();
display.getSize(size);
widthDisplay = size.x;
heightDisplay = size.y;
//Test to set the string resources programmatically
String goalText = getString(R.string.goal);
String timeText = getString(R.string.time);
binding.textViewGoal.setText(goalText);
binding.textView3.setText(timeText);
container.getContext();
constraintLayout= binding.constraintLayout;
fragmentViewHasBeenCreated = true;
getActivity().setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
constraintLayout = binding.constraintLayout;
constraintSet = new ConstraintSet();
return binding.getRoot();
}//end onCreateView
@Override
public void onDestroyView() {
super.onDestroyView();
// Reset your variable to false
fragmentViewHasBeenCreated = false;
}
}
Код: Выделить всё
В папкеvalues/string/strings.xml есть две записи
Код: Выделить всё
" Goal
Time"
Код: Выделить всё
Ziel
Zeit"
Обновить >: Я обнаружил, что при смене языка в классе FR_Options я возвращаюсь к своему классу FR_Menu, который выглядит следующим образом
Код: Выделить всё
public class FR_Menu extends Fragment implements View.OnClickListener{
private FragmentMenuBinding binding;
public FR_Menu() {
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
binding = FragmentMenuBinding.inflate(inflater, container, false);
getActivity().setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
binding.buttonGame.setOnClickListener(this);
binding.buttonOptions.setOnClickListener(this);
binding.buttonHighscores.setOnClickListener(this);
binding.buttonFacts.setOnClickListener(this);
binding.buttonExit.setOnClickListener(this);
binding.buttonTest.setOnClickListener(this);
Log.e("LogTag_Menu", "Method onCreateView - this: " + this);
return binding.getRoot();
}
@Override
public void onClick(View view) {
if(view.getId() == R.id.button_game) {
Navigation.findNavController(getView()).navigate(FR_MenuDirections.actionFRMenuToFRGame());
}
if(view.getId() == R.id.button_highscores) {
Navigation.findNavController(getView()).navigate(FR_MenuDirections.actionFRMenuToFRHighScores());
}
if(view.getId() == R.id.button_facts) {
//Navigation.findNavController(getView()).navigate(FR_MenuDirections.actionFRMenuToFRInterestingFacts());
Navigation.findNavController(getView()).navigate(FR_MenuDirections.actionFRMenuToFRRVLevelSelectionMenu());
}
if(view.getId() == R.id.button_options) {
Navigation.findNavController(getView()).navigate(FR_MenuDirections.actionFRMenuToFROptions());
}
if(view.getId() == R.id.button_test) {
Navigation.findNavController(getView()).navigate(FR_MenuDirections.actionFRMenuToTest());
}
if(view.getId() == R.id.button_exit) {
getActivity().finishAndRemoveTask();
}
}
}
Напоминание. Есть ли у кого-нибудь идеи, почему это происходит и как решить эту проблему?
Подробнее здесь: https://stackoverflow.com/questions/783 ... a-fragment