2016-08-19 29 views
1

このような数多くの質問を検索しましたが、いずれの回答も見つけられませんでした。 ONATTACH(コンテキストコンテキストは)と呼ばなっている場合フラグメントからローカルデフォルトをenに設定する方法

package com.demo.tomcatfire.taskmanagerui; 

import android.content.Context; 
import android.content.Intent; 
import android.content.res.Configuration; 
import android.os.Bundle; 
import android.support.v4.app.Fragment; 
import android.view.LayoutInflater; 
import android.view.View; 
import android.view.ViewGroup; 
import android.widget.LinearLayout; 

import java.util.Locale; 

public class MainFragment2 extends Fragment implements View.OnClickListener { 
    private LinearLayout ll_display,ll_add,ll_about,ll_about2,ll_learnig,ll_learnig2; 


    @Override 
    public void onAttach(Context context) { 

     Locale locale = new Locale("en"); 
     Locale.setDefault(locale); 
     Configuration config = new Configuration(); 
     config.locale = locale; 
     context.getResources().updateConfiguration(config, 
       context.getResources().getDisplayMetrics()); 
    } 

    @Override 
    public void onStart() { 

     Locale locale = new Locale("en"); 
     Locale.setDefault(locale); 
     Configuration config = new Configuration(); 
     config.locale = locale; 
     getContext().getResources().updateConfiguration(config, 
       getContext().getResources().getDisplayMetrics()); 
    } 

    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
     View rootView = inflater.inflate(R.layout.fragment_main2, container, false); 

     ll_about=(LinearLayout) rootView.findViewById(R.id.LL_aboute); 
     ll_about2=(LinearLayout) rootView.findViewById(R.id.LL_aboute2); 
     ll_display=(LinearLayout)rootView.findViewById(R.id.LL_display); 
     ll_learnig=(LinearLayout) rootView.findViewById(R.id.LL_learning); 
     ll_learnig2=(LinearLayout) rootView.findViewById(R.id.LL_learning2); 
     ll_add=(LinearLayout)rootView.findViewById(R.id.LL_add); 
     //------------------------------------------------------------------------------------------ 
     ll_add.setOnClickListener(this); 
     ll_display.setOnClickListener(this); 
     ll_learnig.setOnClickListener(this); 
     ll_learnig2.setOnClickListener(this); 
     ll_about.setOnClickListener(this); 
     ll_about2.setOnClickListener(this); 



     return rootView; 
    } 

    @Override 
    public void onClick(View v) { 
     switch (v.getId()) 
     { 
      case R.id.LL_aboute: 
       break; 
      case R.id.LL_aboute2: 
       break; 
      case R.id.LL_add: 
       startActivity(new Intent(getContext(),AddTaskActivity.class)); 
       break; 
      case R.id.LL_learning: 
       break; 
      case R.id.LL_learning2: 
       break; 
      case R.id.LL_display: 
       startActivity(new Intent(getContext(),DisplayFinalActivity.class)); 

       break; 

     } 

    } 

    @Override 
    public void onResume() { 
     Locale locale = new Locale("en"); 
     Locale.setDefault(locale); 
     Configuration config = new Configuration(); 
     config.locale = locale; 
     getActivity().getBaseContext().getResources().updateConfiguration(config, 
       getActivity().getBaseContext().getResources().getDisplayMetrics()); 
    } 
} 
+0

あなたはどんなエラーやクラッシュをしていますか? – Talha

+0

@ Talha:エラーは発生しませんが、動作しなかったし、動作しませんでした。 – EhSAn

+0

デフォルトロケールが英語(en)であるかどうか確認しましたか?あなたは同じことを設定しようとしている場合はどうなりますか? – Talha

答えて

0

チェック:私はonStart()onAttach()onCreateView()にこのコードを使用しますが

マイ・フラグメントのコードを動作しませんでした、フラグメントから英語へのローカルのデフォルトを設定したいです?

ソリューション: this methodは、API 23に追加されているので、あなたが使用しているとしてサポートライブラリフラグメントを使用する必要があります。 次のコードでテストしました。それは働いている。

@Override 
    public void onAttach(Context context) { 
     super.onAttach(context); // this statement is missing 
     Locale locale = new Locale("en"); 
     Locale.setDefault(locale); 
     Configuration config = new Configuration(); 
     config.locale = locale; 
     context.getResources().updateConfiguration(config, 
       context.getResources().getDisplayMetrics()); 
    } 

さらに、onAttach()メソッドでロケールを変更する必要があります。

希望すると、これが役立ちます。

+0

ありがとう:) – EhSAn

関連する問題