【发布时间】:2017-06-22 06:04:27
【问题描述】:
当我意识到必须使用片段而不是活动来在所有活动中拥有相同的导航菜单时,我几乎完成了我的应用程序,并且正在做导航菜单。所以现在,我目前正在复制、粘贴和使活动 java 在片段 java 中工作。在我的设置页面上,我有一个微调器,可让您选择一种语言。但是,部分代码中有一个我似乎无法弄清楚的错误。非常感谢所有帮助!谢谢!
package com.ezeapplications.quikflipfinal;
import android.content.Intent;
import android.content.res.Configuration;
import android.content.res.Resources;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentActivity;
import android.util.DisplayMetrics;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.Spinner;
import android.widget.Toast;
import java.util.Locale;
import java.util.Set;
/**
* A simple {@link Fragment} subclass.
*/
public class SettingsFragment extends Fragment implements View.OnClickListener, AdapterView.OnItemSelectedListener {
public SettingsFragment() {
// Required empty public constructor
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_settings, container, false);
Button settupdatebtn = (Button) view.findViewById(R.id.setting_update_btn);
settupdatebtn.setOnClickListener(this);
Spinner langspinner = (Spinner) view.findViewById(R.id.settings_language_spinner);
// Create an ArrayAdapter using the string array and a default spinner layout
ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(getActivity(),
R.array.lang_array, android.R.layout.simple_spinner_item);
// Specify the layout to use when the list of choices appears
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
// Apply the adapter to the spinner
langspinner.setAdapter(adapter);
return view;
}
@Override
public void onItemSelected(AdapterView<?> parent, View view, int pos, long id) {
Spinner langspinner = (Spinner) view.findViewById(R.id.settings_language_spinner);
langspinner.setOnItemSelectedListener(this);
if (pos == 1) {
Toast.makeText(parent.getContext(),
"You Have Selected English!", Toast.LENGTH_SHORT)
.show();
setLocale("en");
SettingsFragment fragmenten = new SettingsFragment();
android.support.v4.app.FragmentTransaction fragmentTransactionen =
getActivity().getSupportFragmentManager().beginTransaction();
fragmentTransactionen.replace(R.id.fragment_container, fragmenten);
fragmentTransactionen.commit();
langspinner.setSelection(1);
} else if (pos == 2) {
Toast.makeText(parent.getContext(),
"Has Seleccionado Español!", Toast.LENGTH_SHORT)
.show();
setLocale("es");
SettingsFragment fragmentes = new SettingsFragment();
android.support.v4.app.FragmentTransaction fragmentTransactiones =
getActivity().getSupportFragmentManager().beginTransaction();
fragmentTransactiones.replace(R.id.fragment_container, fragmentes);
fragmentTransactiones.commit();
langspinner.setSelection(2);
} else if (pos == 3) {
Toast.makeText(parent.getContext(),
"Vous Avez Sélectionné Le Français!", Toast.LENGTH_SHORT)
.show();
setLocale("fr");
SettingsFragment fragmentfr = new SettingsFragment();
android.support.v4.app.FragmentTransaction fragmentTransactionfr =
getActivity().getSupportFragmentManager().beginTransaction();
fragmentTransactionfr.replace(R.id.fragment_container, fragmentfr);
fragmentTransactionfr.commit();
langspinner.setSelection(3);
}
}
public void onNothingSelected(AdapterView<?> arg0) {
// TODO Auto-generated method stub
}
@Override
public void onClick (View v) {
SettingsFragment fragment = new SettingsFragment();
android.support.v4.app.FragmentTransaction fragmentTransaction =
getFragmentManager().beginTransaction();
fragmentTransaction.replace(R.id.fragment_container,fragment);
fragmentTransaction.commit();
Toast.makeText(getActivity(), "Settings Updated!", Toast.LENGTH_SHORT).show();
};
public void setLocale(String lang) {
Locale myLocale = new Locale(lang);
Resources res = getResources();
DisplayMetrics dm = res.getDisplayMetrics();
Configuration conf = res.getConfiguration();
conf.locale = myLocale;
res.updateConfiguration(conf, dm);
}
}
【问题讨论】:
-
你能把错误贴在这里吗?没有它,没有人可以识别您的问题。
-
我不小心发布了问题,而不是添加标签或代码。我正计划这样做,但不得不编辑问题,因为我不小心发布得太早了。代码就在那里!
标签: java android android-studio android-fragments android-spinner