Android 微调器未在片段中显示下拉列表
我正在使用当前应用程序中的Android 微调器未在片段中显示下拉列表,android,android-fragments,Android,Android Fragments,我正在使用当前应用程序中的片段。我尝试在其中一个片段中使用微调器,以特定格式对其下方的listview进行排序。适配器设置正确,但我无法打开触摸下拉菜单来选择选项。我如何知道适配器设置正确,是因为在AVD中,我能够使用键盘导航到它并打开它 代码: public class Upcoming_Reminders extends Fragment { private View view; private ProgressDialog progressDialog; private ListVi
片段。我尝试在其中一个片段中使用微调器,以特定格式对其下方的listview
进行排序。适配器
设置正确,但我无法打开触摸下拉菜单来选择选项。我如何知道适配器设置正确,是因为在AVD
中,我能够使用键盘导航到它并打开它
代码:
public class Upcoming_Reminders extends Fragment {
private View view;
private ProgressDialog progressDialog;
private ListView listView;
private String TAG = "Loggin";
RemindersAdapter remindersAdapter;
private Spinner mSortSpinner;
private String[] test;
public Upcoming_Reminders() {
// Required empty public constructor
}
@Override
public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
mSortSpinner = (Spinner) view.findViewById(R.id.sort_spinner);
ArrayAdapter<CharSequence> mSortAdapter = new ArrayAdapter<CharSequence>(getContext(), android.R.layout.simple_spinner_item, test);
mSortAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
mSortSpinner.setAdapter(mSortAdapter);
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
view = inflater.inflate(R.layout.fragment_upcoming__reminders, container, false);
test = getActivity().getResources().getStringArray(R.array.sort_by);
listView = (ListView) view.findViewById(R.id.contracts_list);
return view;
}
原因可能是什么?我在谷歌上搜索了很多次,但都没有找到和我有同样问题的人
多谢各位
编辑1:资源文件
<resources>
<array name="sort_by">
<item>Option 1</item>
<item>Option 2</item>
<item>Option 3</item>
<item>Option 4</item>
</array></resources>
选择1
选择2
选择3
选择4
试试这个:
public class SpinnerAdapter extends ArrayAdapter<String>
{
private Activity context;
String[] data = null;
public SpinnerAdapter(Activity context, int resource,
String[] data2)
{
super(context, resource, data2);
this.context = context;
this.data = data2;
}
...
@Override
public View getDropDownView(int position, View convertView,
ViewGroup parent)
{
View row = convertView;
if(row == null)
{
//inflate your customlayout for the textview
LayoutInflater inflater = context.getLayoutInflater();
row = inflater.inflate(R.layout.spinner_layout, parent, false);
}
//put the data in it
String item = data[position];
if(item != null)
{
TextView text1 = (TextView) row.findViewById(R.id.rowText);
text1.setTextColor(Color.WHITE);
text1.setText(item);
}
return row;
}
...
}
公共类SpinnerAdapter扩展了ArrayAdapter
{
私人活动语境;
字符串[]数据=null;
公共SpinnerAdapter(活动上下文、int资源、,
字符串[]数据2)
{
超级(上下文、资源、数据2);
this.context=上下文;
这个.data=data2;
}
...
@凌驾
公共视图getDropDownView(int位置,视图转换视图,
视图组(父级)
{
视图行=转换视图;
if(行==null)
{
//为文本视图膨胀自定义布局
LayoutInflater充气器=上下文。getLayoutInflater();
行=充气机。充气(R.layout.spinner\U布局,父级,false);
}
//把数据放进去
字符串项=数据[位置];
如果(项!=null)
{
TextView text1=(TextView)row.findViewById(R.id.rowText);
text1.setTextColor(Color.WHITE);
text1.setText(项目);
}
返回行;
}
...
}
然后设置微调器的适配器:
Spinner mySpinner = (Spinner) findViewById(R.id.mySpinner);
final String[] data = getResources().getStringArray(
R.array.data);
final ArrayAdapter<String> adapter = new SpinnerAdapter(
MainActivity.this, android.R.layout.simple_spinner_item,
data);
mySpinner.setAdapter(adapter);
Spinner mySpinner=(Spinner)findViewById(R.id.mySpinner);
最终字符串[]数据=getResources().getStringArray(
R.array.data);
最终阵列适配器=新SpinnerAdapter(
MainActivity.this,android.R.layout.simple\u微调器\u项,
数据);
设置适配器(适配器);
公共类SpinnerFragment扩展片段{
私人纺纱机;
私有字符串[]测试={“1”、“2”、“3”、“4”、“5”};
@可空
@凌驾
创建视图时的公共视图(LayoutFlater充气机、@Nullable ViewGroup容器、Bundle savedInstanceState){
视图=充气机。充气(右布局。碎片旋转器,容器,假);
微调器=(微调器)视图.findViewById(R.id.spinner);
ArrayAdapter mSortAdapter=新的ArrayAdapter(getActivity(),android.R.layout.simple\u微调器\u项,测试);
mSortAdapter.setDropDownViewResource(android.R.layout.simple\u spinner\u dropdown\u项目);
spinner.setAdapter(mSortAdapter);
返回视图;
}
}
问题似乎出在FrameLayout上。我切换到RelativeLayout,它开始工作得很好。试试这个ArrayAdapter mSortSpinner=new ArrayAdapter(getActivity(),android.R.layout.simple_spinner_项,test)代码>不起作用!问题主要出在微调器上,而不是适配器本身。适配器正在完全加载。如果我没记错的话,不带适配器的微调器也可以单击,但会显示一个空白的下拉列表。请显示编辑为OP的阵列文件。不起作用。填充微调器好的,仍然可以使用键盘查看选择,但不是像所有微调器一样可以单击。我已经尝试过这个,在我的设备中工作得非常好。检查以下代码您是否在活动或片段中实现了它?这在一个活动中肯定会起作用,它在一个片段中不起作用是的,这段代码用于活动,但下面的代码在片段中运行良好。
Spinner mySpinner = (Spinner) findViewById(R.id.mySpinner);
final String[] data = getResources().getStringArray(
R.array.data);
final ArrayAdapter<String> adapter = new SpinnerAdapter(
MainActivity.this, android.R.layout.simple_spinner_item,
data);
mySpinner.setAdapter(adapter);
public class SpinnerFragment extends Fragment {
private Spinner spinner;
private String[] test = {"1","2","3","4","5"};
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_spinner,container,false);
spinner = (Spinner) view.findViewById(R.id.spinner);
ArrayAdapter<CharSequence> mSortAdapter = new ArrayAdapter<CharSequence>(getActivity(), android.R.layout.simple_spinner_item, test);
mSortAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spinner.setAdapter(mSortAdapter);
return view;
}
}