如何在片段内制作微调器?

How to make a spinner inside a fragment?

我正在开发一个需要多个选项卡的小型应用程序,每个选项卡都有不同的数据输入,使用片段一切正常,其中一个输入必须以微调器的形式进行,但这样做会导致“ Cannot solve symbol" on 'parent' and 'position', 'createFromResource (android.content.Context, int, int)' in 'android.widget.ArrayAdapter' cannot apply to '(com.example.sinalt2.fragment2, int, int)' ,代码在这里的任何方式,任何帮助表示赞赏。


    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        // Inflate the layout for this fragment
        return inflater.inflate(R.layout.fragment_fragment2, container, false);

        Spinner spinner = findViewById(R.id.spinner1);
        ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(this,R.array.documento, android.R.layout.simple_spinner_item);
        adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
        spinner.setAdapter(adapter);
        spinner.setOnItemSelectedListener(this);
    }

    @Override
    public void onItemSelected(AdapterView<?> adapterView, View view, int i, long l) {
        String text = parent.getItemPosition(position).toString();
        Toast.makeText(parent.getContext(), text, Toast.LENGTH_SHORT).show();
    }

    @Override
    public void onNothingSelected(AdapterView<?> adapterView) {

    }
}
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".fragment2">

    <!-- TODO: Update blank fragment layout -->

    <TextView
        android:id="@+id/textView6"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginStart="120dp"
        android:layout_marginTop="43dp"
        android:layout_marginEnd="8dp"
        android:text="Nome *" />

    <EditText
        android:id="@+id/editTextTextPersonName4"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginStart="180dp"
        android:layout_marginTop="30dp"
        android:layout_marginEnd="8dp"
        android:ems="10"
        android:hint="Digite seu nome"
        android:inputType="textPersonName"
        android:minHeight="48dp" />

    <TextView
        android:id="@+id/textView8"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginStart="36dp"
        android:layout_marginTop="92dp"
        android:layout_marginEnd="8dp"
        android:text="Tipo de documento *" />

    <Spinner
        android:id="@+id/spinner1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginStart="260dp"
        android:layout_marginTop="78dp"
        android:layout_marginEnd="8dp"
        android:entries="@array/documento"
        android:minHeight="48dp" />

    <TextView
        android:id="@+id/textView7"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginStart="66dp"
        android:layout_marginTop="140dp"
        android:layout_marginEnd="8dp"
        android:text="Nº Documento *" />

    <EditText
        android:id="@+id/editTextNumber"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginStart="180dp"
        android:layout_marginTop="125dp"
        android:layout_marginEnd="8dp"
        android:ems="10"
        android:inputType="number"
        android:minHeight="48dp" />

    <TextView
        android:id="@+id/textView9"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginStart="102dp"
        android:layout_marginTop="190dp"
        android:layout_marginEnd="8dp"
        android:text="Telefone *" />

    <EditText
        android:id="@+id/editTextPhone"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginStart="180dp"
        android:layout_marginTop="176dp"
        android:layout_marginEnd="8dp"
        android:ems="10"
        android:inputType="phone"
        android:minHeight="48dp" />

    <TextView
        android:id="@+id/textView10"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginStart="114dp"
        android:layout_marginTop="245dp"
        android:layout_marginEnd="8dp"
        android:text="E-mail *" />

    <EditText
        android:id="@+id/editTextTextEmailAddress"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginStart="180dp"
        android:layout_marginTop="226dp"
        android:layout_marginEnd="8dp"
        android:ems="10"
        android:inputType="textEmailAddress"
        android:minHeight="48dp" />

    <TextView
        android:id="@+id/textView11"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginStart="70dp"
        android:layout_marginTop="290dp"
        android:layout_marginEnd="8dp"
        android:text="Município/UF *" />

</FrameLayout>

由于onCreateView的return类型是View,您需要将onCreateView内的代码改写如下。我还假设微调器位于 fragment_fragment2 布局内。

同样对于 ArrayAdapter.createFromResource,您需要传递上下文。由于您在片段 this 中引用 Fragment。因此你需要通过 getAcitvity()

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
    // Inflate the layout for this fragment
    View view = inflater.inflate(R.layout.fragment_fragment2, container, false);

    Spinner spinner = view.findViewById(R.id.spinner1);
    ArrayAdapter<CharSequence> adapter =  ArrayAdapter.createFromResource(getActivity(),R.array.documento, 
    android.R.layout.simple_spinner_item);
    adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
    spinner.setAdapter(adapter);
    spinner.setOnItemSelectedListener(this);
    return view;
}

更新: 您还需要调整 onItemSelected

中的代码
@Override
public void onItemSelected(AdapterView<?> parent, View view, int i, long l) {
    String text = parent.getItemAtPosition(i).toString();
    Toast.makeText(parent.getContext(), text, Toast.LENGTH_SHORT).show();
}