Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/225.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 微调器未在片段中显示下拉列表_Android_Android Fragments - Fatal编程技术网

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;
  }
}