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;
}
我是编程新手,正在尝试在 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;
}