Spinner 导致我的应用程序在 android studio 中崩溃

Spinner causes my app to crash in android studio

我是编程新手,正在尝试在 adnroid studio 中制作基本应用程序。 我正在尝试构建一个微调器,我的代码基于此“https://developer.android.com/guide/topics/ui/controls/spinner”。

现在,当我尝试创建微调器时,我的应用程序崩溃了。我已经尝试了在 google 上可以找到的所有内容,但似乎没有任何效果。

这是我的代码:

MainActivity.java

Spinner spinner = findViewById(R.id.workout_spinner);
    ArrayAdapter<CharSequence> adapter1 = ArrayAdapter.createFromResource(this,
            R.array.workout_array, android.R.layout.simple_spinner_item);
    adapter1.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
    spinner.setAdapter(adapter1);

Stings.xml:

<string-array name="workout_array">
    <item>Dumbbell Press</item>
    <item>Cable Row</item>
    <item>Shoulder Press</item>
    <item>Lat Pulldown</item>
    <item>Lateral Raise</item>
    <item>Leg Press</item>
    <item>Lunges</item>
    <item>Biceps</item>
    <item>Triceps</item>
</string-array>

这里是 fragment_slideshow.xml

<Spinner
    android:id="@+id/workout_spinner"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintHorizontal_bias="0.0"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toTopOf="parent" />

这是工作室给出的错误 android:

E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.example.schema_app, PID: 24319
java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.Spinner.setAdapter(android.widget.SpinnerAdapter)' on a null object reference
    at com.example.schema_app.MainActivity.onCreateOptionsMenu(MainActivity.java:70)
    at android.app.Activity.onCreatePanelMenu(Activity.java:4206)
    at androidx.fragment.app.FragmentActivity.onCreatePanelMenu(FragmentActivity.java:324)
    at androidx.appcompat.view.WindowCallbackWrapper.onCreatePanelMenu(WindowCallbackWrapper.java:94)
    at androidx.appcompat.app.AppCompatDelegateImpl$AppCompatWindowCallback.onCreatePanelMenu(AppCompatDelegateImpl.java:3070)
    at androidx.appcompat.view.WindowCallbackWrapper.onCreatePanelMenu(WindowCallbackWrapper.java:94)
    at androidx.appcompat.app.ToolbarActionBar.populateOptionsMenu(ToolbarActionBar.java:456)
    at androidx.appcompat.app.ToolbarActionBar.run(ToolbarActionBar.java:57)
    at android.os.Handler.handleCallback(Handler.java:938)
    at android.os.Handler.dispatchMessage(Handler.java:99)
    at android.os.Looper.loop(Looper.java:223)
    at android.app.ActivityThread.main(ActivityThread.java:7656)
    at java.lang.reflect.Method.invoke(Native Method)
    at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:592)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:947)

I/Process:发送信号。 PID:24319 SIG:9

如有任何帮助,我们将不胜感激。

根据你的问题我了解到,你的 Spinner 在 fragment_slideshow 里面,这意味着它是一个 Fragment。您正在 MainActivity 内初始化微调器,其中微调器不存在。因此,将您的代码移至 FragmentSlideshow.

@Override
    public View onCreateView(LayoutInflater inflater, ViewGroup group, Bundle savedInstanceState) {
        rootView = inflater.inflate(R.layout.fragment_slideshow , group, false);

        Spinner spinner = (Spinner) rootView.findViewById(R.id.workout_spinner);
        ArrayAdapter<CharSequence> adapter1 =
        ArrayAdapter.createFromResource(this,
                                        R.array.workout_array,
                                        android.R.layout.simple_spinner_item);
        adapter1.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
        spinner.setAdapter(adapter1);
        return rootView;

    }