我有3个片段片段-A它底部有3个按钮,我将Fragment-B和Fragment-C放在Fragment-A的顶部。
当我在平板电脑上运行我的应用程序时,在左侧我显示包含列表视图的Fragment-B,在右侧我用ListView语言显示Fragment-C。当我更改语言时(通过在Fragment-C中进行选择),我可以更改Fragment-C的内容,但不能更改Fragment-A或Fragment-B。
我需要改变Fragment-A,Fragment-B& D的整个视图。片段-C但我不知道该怎么做。
我的代码是:
Fragment-A extends BluetoothControllerActivity implements OnClickListener {
String displayedLanguage;
/*
* Declaration Section
*/
/**
* Opens Display Fragment
*/
public Button mDisplayButton = null;
/**
* Opens Settings Fragment
*/
public Button mSettingsButton = null;
/**
* Opens Help Fragment
*/
public Button mHelpButton = null;
View view = null;
Locale newLocale = null;
String digitalString = "Digital";
String gaugeString = "Gauge";
String mainMenuActivity= "MainMenuActivity";
boolean buttonClick = false;
SharedPreferences preferences;
Editor editor ;
SharedPreferences languagepref;
Editor languageEditor;
public static String LOCAL_CHANGE_INTENT="locale_change";
/**
*
*/
FragmentManager fragmentManager = null;
FragmentTransaction fragmentTransaction = null;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.homeactivity);
loadUI();
displayFromSelectedLangauge();
}
@Override
public void onClick(View view) {
switch (view.getId()) {
case R.id.btn_home_display:
mDisplayButton.setClickable(false);
loadDisplayDialog();
break;
case R.id.btn_home_settings:
//Will Loads Setting fragment
loadSettingsFragment();
break;
case R.id.btn_home_help:
// Will Loads help fragment
loadHelpFragment();
break;
}
}
public void changeLanguage( String locale){
Configuration mConfiguration = new Configuration();
mConfiguration.locale = new Locale(locale);
//.getResources().updateConfiguration(mConfiguration, null);
getApplicationContext().getResources().updateConfiguration(mConfiguration, null);
}
/**
* Method to load DisplayFragment
*/
public void loadDisplayFragment()
{
//mDisplayButton.setFocusable(false);
DisplayFragment mDisplayFragment = new DisplayFragment();
fragmentTransaction = fragmentManager.beginTransaction();
//fragmentTransaction.addToBackStack(null);
Bundle args = new Bundle();
args.putString("digital", digitalString);
mDisplayFragment.setArguments(args);
fragmentTransaction.replace(R.id.holder_fragment, mDisplayFragment,"DisplayFragment");
//mDisplayFragment.getView().setEnabled(false);
fragmentTransaction.commit();
}
/**
* Method to load HelpFragment
*/
public void loadHelpFragment()
{
mDisplayButton.setClickable(true);
HelpFragment mHelpFragment = new HelpFragment();
fragmentTransaction = fragmentManager.beginTransaction();
fragmentTransaction.replace(R.id.holder_fragment, mHelpFragment);
//fragmentTransaction.addToBackStack(null);
fragmentTransaction.commit();
}
/**
* Method to load SettingsFragment
*/
public void loadSettingsFragment()
{
SettingsFragment mSettingsFragment = new SettingsFragment(this);
mDisplayButton.setClickable(true);
fragmentTransaction = fragmentManager.beginTransaction();
fragmentTransaction.replace(R.id.holder_fragment, mSettingsFragment);
fragmentTransaction.addToBackStack(null);
fragmentTransaction.commit();
}
......................
..........................
Fragment-A Ends
Fragment-B extends ListFragment{
// Decleration Section
/**
* List of Array Elements
*/
public String[] listOfItems = {};
SettingsListFragment _tabletFragmentChild;
/**
* Interface Variable declaration
*/
SettingsItemOnclickInterface mItemClickListener = null;
public SettingsListFragment(){
}
SettingsListFragment( SettingsItemOnclickInterface listener){
mItemClickListener = listener;
}
@Override
public void onActivityCreated(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onActivityCreated(savedInstanceState);
listOfItems = getResources().getStringArray(R.array.settingsScree_string_values);
// Populate list with our static array of titles.
setListAdapter(new ArrayAdapter<String>(getActivity(),
android.R.layout.simple_list_item_1, listOfItems));
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// TODO Auto-generated method stub
return inflater.inflate(R.layout.settings_list_fragment, null);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// TODO Auto-generated method stub
return super.onOptionsItemSelected(item);
}
@Override
public void onListItemClick(ListView listView, View view, int position, long id) {
super.onListItemClick(listView, view, position, id);
TextView mTextView = (TextView)view.findViewById(android.R.id.text1);
System.out.println("Selected" +mTextView.getText());
mItemClickListener.onSettingItemClicked(mTextView.getText().toString());
/**
* Below Lines of Code to Heilight the selected listitem
*/
getListView().setChoiceMode(ListView.CHOICE_MODE_SINGLE);
listView.setSelection(position);
view.setBackgroundResource(R.drawable.list_selector);
}
}
Fragment-B Ends
Fragment-C extends ListFragment {
// Declaration Section
/**
* To Get List of Array Elements
*/
public String[] listOfItems = null;
Locale locale;
/**
* Shared Preferences Declaration
*/
SharedPreferences languagepref;
SharedPreferences.Editor languageEditor;
String selecteLanguage = null;
@Override
public void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
languagepref = getActivity().getSharedPreferences("language", 0);
languageEditor = languagepref.edit();
changeLanguage(languagepref.getString("Language", "en"));
}
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
listOfItems = getResources().getStringArray(R.array.language_values);
// Populate list with our static array of titles.
setListAdapter(new ArrayAdapter<String>(getActivity(),
android.R.layout.simple_list_item_1, listOfItems));
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
return inflater.inflate(R.layout.languages, null);
}
@Override
public void onListItemClick(ListView l, View v, int position, long id) {
super.onListItemClick(l, v, position, id);
TextView mTextView = (TextView) v.findViewById(android.R.id.text1);
Toast.makeText(getActivity(), mTextView.getText().toString(), Toast.LENGTH_SHORT).show();
/*int identifier = getResources().getIdentifier(
mTextView.getText().toString(), "string",
getActivity().getPackageName());
String value = getString(identifier);
Toast.makeText(getActivity(), value, Toast.LENGTH_LONG).show();
editor.clear();
editor.putString("Language", getString(identifier));
editor.commit();
changeLanguage(getString(identifier));*/
if(mTextView.getText().toString().equals("English"))
{
selecteLanguage ="en" ;
changeLanguage(selecteLanguage);
languageEditor.commit();
}else if(mTextView.getText().toString().equals("Chinese"))
{
selecteLanguage = "zh";
changeLanguage(selecteLanguage);
languageEditor.commit();
}
else if(mTextView.getText().toString().equals("German"))
{
selecteLanguage = "de";
changeLanguage(selecteLanguage);
languageEditor.commit();
}
}
/**
* Method to change the language
*
* @param localString
*/
public void changeLanguage(String localString)
{
// For change the language into preferred Language.
System.out.println("languageToSelected= "+ localString);
locale = new Locale(localString);
Resources res = getResources();
DisplayMetrics dm = res.getDisplayMetrics();
Configuration config = new Configuration();
config.locale = locale;
getActivity().getBaseContext().getResources().updateConfiguration(config, dm);
Locale.setDefault(locale);
// getActivity().getBaseContext().getResources().updateConfiguration(config, getActivity().getBaseContext().getResources().getDisplayMetrics());
languageEditor.putString("language",localString );
languageEditor.commit();