如何刷新片段的当前视图

时间:2013-02-19 13:39:40

标签: android

我有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();

0 个答案:

没有答案