Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/189.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
Java “上的第一个参数类型错误”;这";在片段数组中_Java_Android_Android Studio_Android Fragments_Android Spinner - Fatal编程技术网

Java “上的第一个参数类型错误”;这";在片段数组中

Java “上的第一个参数类型错误”;这";在片段数组中,java,android,android-studio,android-fragments,android-spinner,Java,Android,Android Studio,Android Fragments,Android Spinner,我几乎完成了我的应用程序,最后一次做导航菜单时,我意识到你必须使用片段,而不是活动,才能在所有活动中使用相同的导航菜单。所以现在,我正在复制、粘贴和使ActivityJava在片段java中工作。在我的设置页面上,我有一个微调器,允许您选择语言。然而,部分代码中有一个我似乎无法理解的错误。非常感谢您的帮助!!谢谢大家! package com.ezeapplications.quikflipfinal; 导入android.content.Intent; 导入android.content.r

我几乎完成了我的应用程序,最后一次做导航菜单时,我意识到你必须使用片段,而不是活动,才能在所有活动中使用相同的导航菜单。所以现在,我正在复制、粘贴和使ActivityJava在片段java中工作。在我的设置页面上,我有一个微调器,允许您选择语言。然而,部分代码中有一个我似乎无法理解的错误。非常感谢您的帮助!!谢谢大家!

package com.ezeapplications.quikflipfinal;
导入android.content.Intent;
导入android.content.res.Configuration;
导入android.content.res.Resources;
导入android.os.Bundle;
导入android.support.annotation.Nullable;
导入android.support.v4.app.Fragment;
导入android.support.v4.app.FragmentActivity;
导入android.util.DisplayMetrics;
导入android.view.LayoutInflater;
导入android.view.view;
导入android.view.ViewGroup;
导入android.widget.AdapterView;
导入android.widget.ArrayAdapter;
导入android.widget.Button;
导入android.widget.Spinner;
导入android.widget.Toast;
导入java.util.Locale;
导入java.util.Set;
/**
*一个简单的{@link Fragment}子类。
*/
公共类设置片段扩展片段实现View.OnClickListener、AdapterView.OnItemSelectedListener{
公共设置片段(){
//必需的空公共构造函数
}
@凌驾
CreateView上的公共视图(布局、充气机、视图组容器、捆绑包保存状态){
视图=充气机。充气(R.layout.fragment\u设置,容器,错误);
按钮settupdatebtn=(按钮)视图.findViewById(R.id.setting\u update\u btn);
settupdatebtn.setOnClickListener(此);
微调器langspinner=(微调器)view.findViewById(R.id.settings\u language\u微调器);
//使用字符串数组和默认微调器布局创建ArrayAdapter
ArrayAdapter=ArrayAdapter.createFromResource(getActivity(),
R.array.lang_数组,android.R.layout.simple_微调器_项);
//指定显示选项列表时要使用的布局
setDropDownViewResource(android.R.layout.simple\u微调器\u下拉菜单\u项);
//将适配器应用于微调器
langspinner.setAdapter(适配器);
返回视图;
}
@凌驾
已选择公共位置(AdapterView父项、视图、整数位置、长id){
微调器langspinner=(微调器)view.findViewById(R.id.settings\u language\u微调器);
langspinner.setOnItemSelectedListener(此);
如果(位置==1){
Toast.makeText(parent.getContext(),
“你选择了英语!”,吐司。长度(短)
.show();
设置语言环境(“en”);
SettingsFragmenten=新的SettingsFragment();
android.support.v4.app.FragmentTransaction FragmentTransaction=
getActivity().getSupportFragmentManager().beginTransaction();
fragmentTransactionen.replace(R.id.fragment\u容器,fragmenten);
fragmentTransactionen.commit();
朗斯宾纳(1);
}否则如果(位置==2){
Toast.makeText(parent.getContext(),
“有Selecciando Español!”,吐司。长度(短)
.show();
setLocale(“es”);
SettingsFragments=新的SettingsFragments();
android.support.v4.app.FragmentTransaction片段事务=
getActivity().getSupportFragmentManager().beginTransaction();
碎片交易。替换(R.id.fragment_容器,碎片);
fragmentTransactions.commit();
朗斯宾纳(2);
}否则如果(位置==3){
Toast.makeText(parent.getContext(),
“法兰西的选择!”吐司,长度(短)
.show();
setLocale(“fr”);
SettingsFragmentFr=新的SettingsFragmentFr();
android.support.v4.app.FragmentTransaction FragmentTransaction fR=
getActivity().getSupportFragmentManager().beginTransaction();
fragmentTransactionfr.replace(R.id.fragment\u容器,fragmentfr);
fragmentTransactionfr.commit();
朗斯宾纳(3);
}
}
未选择公共无效(AdapterView arg0){
//TODO自动生成的方法存根
}
@凌驾
公共void onClick(视图v){
SettingsFragment片段=新的SettingsFragment();
android.support.v4.app.FragmentTransaction FragmentTransaction=
getFragmentManager().beginTransaction();
fragmentTransaction.replace(R.id.fragment\u容器,fragment);
fragmentTransaction.commit();
Toast.makeText(getActivity(),“设置已更新!”,Toast.LENGTH_SHORT.show();
};
公共void setLocale(字符串lang){
语言环境myLocale=新语言环境(lang);
Resources res=getResources();
DisplayMetrics dm=res.getDisplayMetrics();
Configuration=res.getConfiguration();
conf.locale=myLocale;
res.updateConfiguration(conf,dm);
}

}
您需要一个上下文来从资源创建ArrayAdapter。Fragment类没有自己的上下文,而是取决于它所在的活动。因此,您需要传递片段所在活动的上下文

这应该是你的分类

ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(getActivity(),
                R.array.lang_array, android.R.layout.simple_spinner_item);
ArrayAdapter=ArrayAdapter.createFromResource(getActivity(),
R.array.lang_数组,android.R.layout.simple_微调器_项);

希望这有帮助,Happin编码

发布此其他答案以回答您的微调器不改变语言问题

简言之,你有
public class SettingsFragment extends Fragment implements View.OnClickListener,
OnItemSelectedListener{...
import android.widget.AdapterView.OnItemSelectedListener;
@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);