Spinner не будет отображать выпадающий фрагмент - PullRequest
0 голосов
/ 15 марта 2020

Я создал фрагмент под названием PaletteFragment , который включает в себя счетчик. Однако когда я нажимаю на счетчик, выпадающие элементы не отображаются. Это позволяет мне нажимать на счетчик, но ничего не делает. Вращатель действительно работал , когда для выполнения задания не требовалось, чтобы я использовал фрагменты (как показано ниже), но теперь, когда мы должны использовать фрагменты, вращатель не работает, хотя я не получаю ошибок в Логкат.

enter image description here

Это то, что я пытаюсь снова получить из фрагмента enter image description here

Это что я получаю после перемещения моей PaletteActivity к моему фрагменту

Вот мой 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();
    }
}

Это соответствующий код, надеюсь, этого достаточно, чтобы определить, что я делаю неправильно, если нет, я выложу весь код

1 Ответ

1 голос
/ 15 марта 2020

У вас все в порядке, за исключением того, что вы не привязываете адаптер со счетчиком. Используйте это, чтобы установить адаптер для счетчика.

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 )
...