Этот скрипт ниже - SettingsActivity.java
public class SettingsActivity extends AppCompatActivity {
Toolbar toolbar;
Context context;
FragmentActivity activity;
CallbackManager callbackManager;
Button changelanguage;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_settings);
this.context = this;
//set toolbar
toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
getSupportActionBar().setDisplayShowHomeEnabled(true);
toolbar.setNavigationOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// close on back button pressed
finish();
}
});
//set fragment to MyPreferenceFragment
getFragmentManager().beginTransaction().replace(R.id.content, new MyPreferenceFragment()).commit();
loadLocale();
activity = this;
//set change language button
changelanguage = findViewById(R.id.change_lang_btn2);
changelanguage.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
// Array of languages to dispaly in AlertDialog
final String[] listitems ={"English","Spanish | Español","Portuguese | Português","French | français"};
// Create AlertDialog to display list of languages
AlertDialog.Builder alert = new AlertDialog.Builder(SettingsActivity.this);
alert.setTitle("Choose Language..");
alert.setSingleChoiceItems(listitems, -1, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
if (i == 0){
//set English
setLocale("en");
recreate();
}
else if (i == 1){
//set Spanish
setLocale("es");
recreate();
}
else if (i == 2){
//set Portuguese
setLocale("pt");
recreate();
}
else if (i == 3){
//set french
setLocale("fr");
recreate();
}
//dismiss alert dialog when language is selected
dialogInterface.dismiss();
}
});
alert.show();
}
});
}
private void setLocale(String lang) {
Locale locale = new Locale(lang);
Locale.setDefault(locale);
Configuration configuration = new Configuration();
configuration.locale = locale;
getBaseContext().getResources().updateConfiguration(configuration,getBaseContext().getResources().getDisplayMetrics());
//save data to sharedpreferences
SharedPreferences.Editor editor = getSharedPreferences("lang_settings",MODE_PRIVATE).edit();
editor.putString("My_lang",lang);
editor.apply();
}
//load language saved in shared preferences
public void loadLocale(){
SharedPreferences prefs = getSharedPreferences("lang_settings", Activity.MODE_PRIVATE);
String language = prefs.getString("My_lang", "");
setLocale(language);
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
callbackManager.onActivityResult(requestCode, resultCode, data);
}
}
Этот скрипт ниже Activity_Settings.xml
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fitsSystemWindows="true"
android:gravity="center"
tools:context="com.riipo.gt.MainActivity">
<android.support.v7.widget.Toolbar xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="?attr/colorPrimary"
android:minHeight="?attr/actionBarSize"
app:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar" />
<FrameLayout
android:id="@+id/drawer_container"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_below="@id/toolbar">
<fragment
android:id="@+id/content"
class="com.riipo.helpers.MyPreferenceFragment"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_weight="1" />
</FrameLayout>
<Button
android:id="@+id/change_lang_btn2"
android:layout_width="wrap_content"
android:layout_height="45dp"
android:layout_alignParentEnd="true"
android:layout_alignParentRight="true"
android:layout_gravity="center"
android:layout_margin="10dp"
android:backgroundTint="@color/accent"
android:gravity="center_vertical"
android:paddingLeft="20dp"
android:paddingRight="20dp"
android:text="@string/change_language_button"
android:textColor="@color/colorWhite"
android:textSize="14sp"
/>
</RelativeLayout>
Это ошибка, которую я получаю:
Теперь я опишу проблему. Сценарий - это способ изменить язык моего приложения с помощью кнопки в области конфигурации. Таким образом, сценарий находится внутри SettingsActivity.java. Когда вы нажимаете кнопку, появляется возможность выбора выбрано и при выборе приложения перерывы.
Показывает сообщение об ошибке выше, это простая система языкового обмена, но бывают дни, когда я бью по ней, может кто-нибудь мне помочь?
Заранее спасибо!