微调框不会显示片段的下拉列表 [英] Spinner wont show dropdown in fragment

查看:72
本文介绍了微调框不会显示片段的下拉列表的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我创建了一个名为 PaletteFragment 的片段,其中包含一个微调框.但是,当我单击微调器时,没有出现下拉菜单项.它允许我单击微调器,但不执行任何操作.当作业不需要我使用片段时,微调器可以工作(如下所示),但是现在我们被要求使用片段,即使我没有遇到任何错误,微调器也无法工作在logcat中.

I have created a Fragment called PaletteFragment that includes a spinner. However, when I click on the spinner, the dropdown items do not appear. It is allowing me to click on the spinner, but doesn't do anything. The spinner did work when the assignment didn't require me to use fragments (as shown below) but now that we are required to use fragments, the spinner does not work even though I'm getting no errors in the logcat.

这就是我试图从片段中再次得到的东西

This is what I am trying to get again from the fragment

这是将PaletteActivity移至片段后得到的结果

This is what I am getting after moving my PaletteActivity to my fragment

这是我的 PaletteFragment

package edu.temple.coloractivity;


import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.Spinner;

import androidx.fragment.app.Fragment;
import androidx.fragment.app.FragmentActivity;

import java.util.Locale;


/**
 * A simple {@link Fragment} subclass.
 * Use the {@link PaletteFragment #newInstance} factory method to
 * create an instance of this fragment.
 */
public class PaletteFragment extends Fragment {

    // TODO: Rename parameter arguments, choose names that match
    // the fragment initialization parameters, e.g. ARG_ITEM_NUMBER
    private static final String ARG_PARAM1 = "param1";
    private static final String ARG_PARAM2 = "param2";

    // TODO: Rename and change types of parameters
    private String mParam1;
    private String mParam2;

    public static PaletteFragment newIntance(){
        return new PaletteFragment();
    }
    public PaletteFragment() {
        // Required empty public constructor
    }

    /**
     * Use this factory method to create a new instance of
     * this fragment using the provided parameters.
     *
     * @param param1 Parameter 1.
     * @param param2 Parameter 2.
     * @return A new instance of fragment PaletteFragment.
     */
    // TODO: Rename and change types and number of parameters
    public static PaletteFragment newInstance(String param1, String param2) {
        PaletteFragment fragment = new PaletteFragment();
        Bundle args = new Bundle();
        args.putString(ARG_PARAM1, param1);
        args.putString(ARG_PARAM2, param2);
        fragment.setArguments(args);
        return fragment;
    }

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        if (getArguments() != null) {
            mParam1 = getArguments().getString(ARG_PARAM1);
            mParam2 = getArguments().getString(ARG_PARAM2);
        }
    }


    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        View view = inflater.inflate(R.layout.fragment_palette, container, false);
        Spinner spinner = (Spinner) view.findViewById(R.id.spinner);
        ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(
                getActivity(), R.array.myColors, android.R.layout.simple_spinner_item);
        adapter.setDropDownViewResource(
                android.R.layout.simple_spinner_dropdown_item);
        ArrayAdapter<CharSequence> stringNames = ArrayAdapter.createFromResource(getActivity(), R.array.myStrings, android.R.layout.simple_spinner_item);
        stringNames.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
        ArrayAdapter<CharSequence> stringName = ArrayAdapter.createFromResource(getActivity(),R.array.myStrings, android.R.layout.simple_spinner_item);
        stringName.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);

        View v = inflater.inflate(R.layout.fragment_palette,container,false);
        spinner = v.findViewById(R.id.spinner);
        spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
            @Override
            public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
                if(position == 0){
                }
                else if(position == 1){
                    Intent i = new Intent(getActivity(), CanvasActivity.class);
                    i.putExtra("position",1);
                    startActivity(i);
                }else if(position == 2){
                    Intent i = new Intent(getActivity(), CanvasActivity.class);
                    i.putExtra("position",2);
                    startActivity(i);
                }else if(position == 3){
                    Intent i = new Intent(getActivity(), CanvasActivity.class);
                    i.putExtra("position",3);
                    startActivity(i);
                }else if(position == 4){
                    Intent i = new Intent(getActivity(), CanvasActivity.class);
                    i.putExtra("position",4);
                    startActivity(i);
                }else if(position == 5){
                    Intent i = new Intent(getActivity(), CanvasActivity.class);
                    i.putExtra("position",5);
                    startActivity(i);
                }else if(position == 6){
                    Intent i = new Intent(getActivity(), CanvasActivity.class);
                    i.putExtra("position",6);
                    startActivity(i);
                }else if(position == 7){
                    Intent i = new Intent(getActivity(), CanvasActivity.class);
                    i.putExtra("position",7);
                    startActivity(i);
                }else if(position == 8){
                    Intent i = new Intent(getActivity(), CanvasActivity.class);
                    i.putExtra("position",8);
                    startActivity(i);
                }else if(position == 9){
                    Intent i = new Intent(getActivity(), CanvasActivity.class);
                    i.putExtra("position",9);
                    startActivity(i);
                }else if(position == 10){
                    Intent i = new Intent(getActivity(), CanvasActivity.class);
                    i.putExtra("position",10);
                    startActivity(i);
                }

            }
            @Override
            public void onNothingSelected(AdapterView<?> parent) {
            }
        });
        return view;
    }

}

这是我的 PaletteActivity

package edu.temple.coloractivity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.Spinner;
import androidx.appcompat.app.AppCompatActivity;
import androidx.fragment.app.FragmentManager;

import java.util.Locale;


public class PaletteActivity extends AppCompatActivity {
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        PaletteFragment PaletteFragment = new PaletteFragment();
        FragmentManager manager = getSupportFragmentManager();
        manager.beginTransaction().replace(R.id.firstLayout,PaletteFragment,PaletteFragment.getTag())
                .commit();
    }
}

这是相关的代码,希望它足以发现我做错了,否则我将发布整个代码

This is the relevant code hopefully it is enough to spot what I am doing wrong, if not I'll post the whole code

推荐答案

您一切正常,除非您未将适配器与Spinner绑定.使用此设置转台的适配器.

You doing everything ok, except your are not binding adapter with spinner. Use this to set Adapter for spinner.

stringName.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
            View v = inflater.inflate(R.layout.fragment_palette,container,false);
            spinner = v.findViewById(R.id.spinner);
            spinner.setAdapter(stringName )

这篇关于微调框不会显示片段的下拉列表的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆