Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/204.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 我们可以在片段中的onResume方法中调用onCreateView方法吗?_Android_Android Fragments_Onresume - Fatal编程技术网

Android 我们可以在片段中的onResume方法中调用onCreateView方法吗?

Android 我们可以在片段中的onResume方法中调用onCreateView方法吗?,android,android-fragments,onresume,Android,Android Fragments,Onresume,我正在开发一个android应用程序,其中我使用了片段。在点击列表项和它的工作完成后,我将语言从英语改为阿拉伯语 但我希望选择的语言保留在整个应用程序中,即使我们强制关闭设备上的应用程序。。。。但我没有发生这种事 如果我在活动中使用,则我有呼叫 setContentView(R.layout.main); 在onResume()方法中,其工作正常 但我的问题是,由于onCreateView()方法返回自己的视图,我们如何使用fragment设置视图,或者在onResume()方法上调用onC

我正在开发一个android应用程序,其中我使用了片段。在点击列表项和它的工作完成后,我将语言从英语改为阿拉伯语

但我希望选择的语言保留在整个应用程序中,即使我们强制关闭设备上的应用程序。。。。但我没有发生这种事

如果我在活动中使用,则我有呼叫

setContentView(R.layout.main); 
在onResume()方法中,其工作正常

但我的问题是,由于onCreateView()方法返回自己的视图,我们如何使用fragment设置视图,或者在onResume()方法上调用onCreateView方法。。所以我试了很多办法来解决这个问题,但是我没办法。。那么请问有没有办法解决这个问题

提前谢谢

这是我的代码:

package com.example.okazz.Settings;

import java.util.Locale;

import android.app.Activity;
import android.content.Context;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.Toast;

import com.example.okazz.R;

public class Languages extends Fragment {
// private int current = -1;
View view;
Context ct;
SharedPreferences sp1, sp;
Boolean Ischeck = false;
String User_id, countryid;
Button settings;
String[] arrLanguages = new String[] { "English", "Arabic" };
String req;
ListView lv;
private Locale myLocale;

public Languages(Context c) {

    this.ct = c;
}

/** Called when the activity is first created. */
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
        Bundle savedInstanceState) {
    // TODO Auto-generated method stub

    view = inflater.inflate(R.layout.languagechange, container, false);

    SharedPreferences sp = getActivity().getSharedPreferences("key", 0);
    User_id = sp.getString("userid=", User_id);
    countryid = sp.getString("countryid", countryid);
    settings = (Button) view.findViewById(R.id.btnsett);
    lv = (ListView) view.findViewById(android.R.id.list);
    lv.setAdapter(new MobileArrayAdapter(ct, arrLanguages));
    settings.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View arg0) {
            // TODO Auto-generated method stub
            FragmentManager manager = getFragmentManager();
            manager.popBackStack();
            Log.d("Back to Home", "back button pressed");
        }
    });

    lv.setOnItemClickListener(new OnItemClickListener() {

        @Override
        public void onItemClick(AdapterView<?> parent, View view,
                int position, long id) {

            // get selected items
            String selectedValue = (String) lv.getAdapter().getItem(
                    position);
            Toast.makeText(ct, selectedValue, Toast.LENGTH_SHORT).show();
            // setResult(RESULT_OK, new Intent().putExtra("language",
            // arrLanguages[position]));
            // Configuration config = new Configuration();
            String lang = null;
            switch (position) {
            case 0:
                lang = "en";
                break;
            case 1:
                lang = "ar";
                break;

            default:

                break;
            }

            changeLang(lang);

            // SharedPreferences sp = getActivity().getSharedPreferences(
            // "check", 0);
            //
            // boolean checked = sp.getBoolean("Ischeck", false);
            //
            // if (checked == true) {
            lv.setItemChecked(position, true);
            // }

        }

    });
    return view;
}

public void loadLocale() {
    String langPref = "Language";
    SharedPreferences prefs = ct.getSharedPreferences("CommonPrefs",
            Activity.MODE_PRIVATE);
    String language = prefs.getString(langPref, "");
    changeLang(language);

}

public void saveLocale(String lang) {
    String langPref = "Language";
    SharedPreferences prefs = ct.getSharedPreferences("CommonPrefs",
            Activity.MODE_PRIVATE);
    SharedPreferences.Editor editor = prefs.edit();
    editor.putString(langPref, lang);
    editor.commit();
}

public void changeLang(String lang) {
    if (lang.equalsIgnoreCase(""))
        return;
    myLocale = new Locale(lang);
    Log.v("My Language", myLocale + "");
    saveLocale(lang);
    Locale.setDefault(myLocale);
    android.content.res.Configuration config = new android.content.res.Configuration();
    config.locale = myLocale;
    ct.getResources().updateConfiguration(config,
            ct.getResources().getDisplayMetrics());

}

class MobileArrayAdapter extends ArrayAdapter<String> {
    private final Context context;
    private final String[] values;

    public MobileArrayAdapter(Context context, String[] values) {
        super(context, R.layout.list_changelanguage, values);
        this.context = context;
        this.values = values;
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        LayoutInflater inflater = (LayoutInflater) context
                .getSystemService(Context.LAYOUT_INFLATER_SERVICE);

        View rowView = inflater.inflate(R.layout.list_changelanguage,
                parent, false);
        TextView textView = (TextView) rowView.findViewById(R.id.textView1);
        ImageView imageView = (ImageView) rowView
                .findViewById(R.id.imageView1);
        textView.setText(values[position]);

        String s = values[position];

        System.out.println("**** Position ****" + s);
        if (lv.isItemChecked(position)) {
            imageView.setVisibility(View.VISIBLE);
            Ischeck = true;
            SharedPreferences sp = getActivity().getSharedPreferences(
                    "check", 0);
            SharedPreferences.Editor sedt = sp.edit();
            sedt.putBoolean("Ischeck", Ischeck);
            sedt.clear();
            sedt.commit();
        } else {
            imageView.setVisibility(View.GONE);

        }

        return rowView;
    }
}

@Override
public void onConfigurationChanged(
        android.content.res.Configuration newConfig) {
    super.onConfigurationChanged(newConfig);
    if (myLocale != null) {
        newConfig.locale = myLocale;
        Locale.setDefault(myLocale);
        getActivity().getResources().updateConfiguration(newConfig,
                getActivity().getResources().getDisplayMetrics());
    }
}

@Override
public void onResume() {
    // TODO Auto-generated method stub
    loadLocale();
    super.onResume();
}}
package com.example.okazz.Settings;
导入java.util.Locale;
导入android.app.Activity;
导入android.content.Context;
导入android.content.SharedReferences;
导入android.os.Bundle;
导入android.support.v4.app.Fragment;
导入android.support.v4.app.FragmentManager;
导入android.util.Log;
导入android.view.LayoutInflater;
导入android.view.view;
导入android.view.view.OnClickListener;
导入android.view.ViewGroup;
导入android.widget.AdapterView;
导入android.widget.AdapterView.OnItemClickListener;
导入android.widget.ArrayAdapter;
导入android.widget.Button;
导入android.widget.ImageView;
导入android.widget.ListView;
导入android.widget.TextView;
导入android.widget.Toast;
导入com.example.okazz.R;
公共类语言扩展了片段{
//私有整数电流=-1;
视图;
背景ct;
共享参考sp1,sp;
布尔值Ischeck=false;
字符串用户id,countryid;
按钮设置;
字符串[]arrLanguages=新字符串[]{“英语”、“阿拉伯语”};
字符串请求;
ListView lv;
私人场所;
公共语言(上下文c){
这个.ct=c;
}
/**在首次创建活动时调用*/
@凌驾
创建视图上的公共视图(布局、充气机、视图组容器、,
Bundle savedInstanceState){
//TODO自动生成的方法存根
视图=充气机。充气(R.layout.languagechange,container,false);
SharedReferences sp=getActivity().GetSharedReferences(“键”,0);
User\u id=sp.getString(“userid=”,User\u id);
countryid=sp.getString(“countryid”,countryid);
设置=(按钮)view.findViewById(R.id.btnsett);
lv=(ListView)view.findviewbyd(android.R.id.list);
lv.setAdapter(新的移动适配器(ct、ARR语言));
settings.setOnClickListener(新的OnClickListener(){
@凌驾
公共void onClick(视图arg0){
//TODO自动生成的方法存根
FragmentManager=getFragmentManager();
manager.popbackbackstack();
Log.d(“返回主页”,“按下后退按钮”);
}
});
lv.setOnItemClickListener(新的OnItemClickListener(){
@凌驾
public void onItemClick(AdapterView父级、视图、,
内部位置,长id){
//获取所选项目
字符串selectedValue=(字符串)lv.getAdapter().getItem(
职位);
Toast.makeText(ct,selectedValue,Toast.LENGTH_SHORT).show();
//setResult(RESULT_OK,new Intent().putExtra(“语言”),
//(职位);;
//配置配置=新配置();
字符串lang=null;
开关(位置){
案例0:
lang=“en”;
打破
案例1:
lang=“ar”;
打破
违约:
打破
}
换郎(郎),;
//SharedReferences sp=getActivity()。GetSharedReferences(
//“检查”,0);
//
//选中布尔值=sp.getBoolean(“Ischeck”,false);
//
//如果(选中==true){
lv.setItemChecked(位置,真);
// }
}
});
返回视图;
}
公共void loadLocale(){
字符串langPref=“Language”;
SharedReferences prefs=ct.getSharedReferences(“CommonPrefs”,
活动模式(私人);
String language=prefs.getString(langPref,“”);
语言;
}
公共void saveLocale(字符串lang){
字符串langPref=“Language”;
SharedReferences prefs=ct.getSharedReferences(“CommonPrefs”,
活动模式(私人);
SharedReferences.Editor=prefs.edit();
编辑器.putString(langPref,lang);
commit();
}
公共void changeLang(字符串lang){
if(lang.equalsIgnoreCase(“”)
返回;
myLocale=新语言环境(lang);
Log.v(“我的语言”,myLocale+);
saveLocale(lang);
setDefault(myLocale);
android.content.res.Configuration config=新的android.content.res.Configuration();
config.locale=myLocale;
ct.getResources().updateConfiguration(配置,
ct.getResources().getDisplayMetrics());
}
类MobileArrayAdapter扩展了ArrayAdapter{
私人最终语境;
私有最终字符串[]值;
公共MobileArrayAdapter(上下文,字符串[]值){
super(上下文、R.layout.list\u变更语言、值);
this.context=上下文;
这个值=值;
}
@凌驾
公共视图getView(int位置、视图转换视图、视图组父视图){
LayoutFlater充气器=(LayoutFlater)上下文
.getSystemService(上下文布局\充气机\服务);
视图行视图=充气机。充气(R.layout.list\u更改语言,
父母,假);
TextView TextView=(TextView)rowView.findViewById(R.id.textView1);
ImageView ImageView=(ImageView)行视图
.findViewById(R.id.imageView1);
setText(值[位置]);
字符串s=值[位置];
系统输出打印项次(“*****位置
int lang = //the result of your click inside the list item
Resources res = getResources();
DisplayMetrics dm = res.getDisplayMetrics();
Configuration conf = res.getConfiguration();

switch(lang){
    case ARABIC:
        conf.locale = Locale.WHATEVER;
        break;

    case ENGLISH:
        conf.locale = Locale.ENGLISH;
        break;
}
res.updateConfiguration(conf, dm);