主活动的Android Spinner问题

主活动的Android Spinner问题,android,Android,我想在应用程序的主要活动上添加一个微调器(如图中红色圆圈所示)。旋转器将用于血型采集。我使用了微调器的代码,我已经在另一个微调器中使用了该代码,用于在另一个活动中采集血型。另一个活动是注册表格。在那里效果很好。所以,我只是复制并粘贴代码,而没有出现错误。但在那之后,当我运行应用程序时,它在一开始就崩溃了,无法打开。我做错了什么 package com.sarkerjr.greenBlood; 导入android.content.Intent; 导入android.support.design.

我想在应用程序的主要活动上添加一个微调器(如图中红色圆圈所示)。旋转器将用于血型采集。我使用了微调器的代码,我已经在另一个微调器中使用了该代码,用于在另一个活动中采集血型。另一个活动是注册表格。在那里效果很好。所以,我只是复制并粘贴代码,而没有出现错误。但在那之后,当我运行应用程序时,它在一开始就崩溃了,无法打开。我做错了什么

package com.sarkerjr.greenBlood;
导入android.content.Intent;
导入android.support.design.widget.FloatingActionButton;
导入android.support.v7.app.AppActivity;
导入android.os.Bundle;
导入android.text.TextUtils;
导入android.view.view;
导入android.widget.AdapterView;
导入android.widget.ArrayAdapter;
导入android.widget.Spinner;
导入com.sarkerjr.greenBlood.data.BloodContract;
公共类MainActivity扩展了AppCompatActivity{
//用于在搜索时选择血型的微调器
专用微调器mBloodTypeSpinner;
私有内特mBloodType;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//设置FAB以打开编辑器活动
FloatingActionButton fab=(FloatingActionButton)findViewById(R.id.fab);
fab.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图){
意向意向=新意向(MainActivity.this、EditorActivity.class);
星触觉(意向);
}
});
mBloodTypeSpinner=(Spinner)findViewById(R.id.Spinner\u血型);
//设置采血器旋转器
setupBloodTypeSpinner();
}
/**血型采集装置旋转器*/
私有void setupBloodTypeSpinner(){
//为微调器创建适配器。列表选项来自它将使用的字符串数组
//微调器将使用默认布局
ArrayAdapter血型SpinnerAdapter=ArrayAdapter.createFromResource(此,
R.array.array\u bloodType\u选项,android.R.layout.simple\u微调器\u项);
//指定下拉布局样式-简单列表视图,每行1项
血型SpinNerAdapter.setDropDownViewResource(android.R.layout.simple\u dropdown\u item\u 1line);
//将适配器应用于微调器
mBloodTypeSpinner.setAdapter(血型SpinnerAdapter);
//将选定的整数mSelected设置为常量值
mBloodTypeSpinner.setOnItemSelectedListener(新的AdapterView.OnItemSelectedListener()){
@凌驾
已选择公共视图(AdapterView父视图、视图视图、整型位置、长id){
字符串选择=(字符串)parent.getItemAtPosition(位置);
如果(!TextUtils.isEmpty(选择)){
if(selection.equals(getString(R.string.a_正数))){
mBloodType=BloodContract.DonorEntry.A_阳性;
}else if(selection.equals(getString(R.string.a_负值))){
mBloodType=BloodContract.DonorEntry.A_阴性;
}else if(selection.equals(getString(R.string.b_正数))){
mBloodType=BloodContract.DonorEntry.B_阳性;
}else if(selection.equals(getString(R.string.b_负值))){
mBloodType=BloodContract.DonorEntry.B_阴性;
}else if(selection.equals(getString(R.string.o_正数))){
mBloodType=BloodContract.DonorEntry.O_阳性;
}else if(selection.equals(getString(R.string.o_负值))){
mBloodType=BloodContract.DonorEntry.O_阴性;
}else if(selection.equals(getString(R.string.ab_正数))){
mBloodType=BloodContract.DonorEntry.AB_阳性;
}else if(selection.equals(getString(R.string.ab_负值))){
mBloodType=BloodContract.DonorEntry.AB_阴性;
}否则{
mBloodType=BloodContract.DonorEntry.TYPE_未知;
}
}
}
//因为AdapterView是一个抽象类,所以必须定义onNothingSelected
@凌驾
未选择公共无效(AdapterView父级){
mBloodType=BloodContract.DonorEntry.TYPE_未知;
}
});
}
}
这是堆栈跟踪报告(尽管我不能理解)

2019-03-01 21:06:32.417 23087-23087/com.sarkerjr.greenBlood E/AndroidRuntime:致命异常:main 流程:com.sarkerjr.greenBlood,PID:23087 java.lang.RuntimeException:无法启动活动组件信息{com.sarkerjr.greenBlood/com.sarkerjr.greenBlood.MainActivity}:java.lang.NullPointerException:尝试在空对象引用上调用虚拟方法'void android.widget.Spinner.setAdapter(android.widget.SpinnerAdapter)' 在android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2778)上 位于android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2856) 位于android.app.ActivityThread.-wrap11(未知来源:0) 在android.app.ActivityThread$H.handleMessage(ActivityThread.java:1589)上 位于android.os.Handler.dispatchMessage(Handler.java:106) 位于android.os.Looper.loop(Looper.java:164) 位于android.app.ActivityThread.main(ActivityThread.java:6494) 位于java.lang.reflect.Method.invoke(本机方法) 位于com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:438) 位于com.android.internal.os.ZygoteInit.main(ZygoteInit.java:807) 原因:java.lang.NullPointerException:尝试调用虚拟方法'void android.widget.Spinner.setAdapter(a
package com.sarkerjr.greenBlood;

import android.content.Intent;
import android.support.design.widget.FloatingActionButton;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.text.TextUtils;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.Spinner;

import com.sarkerjr.greenBlood.data.BloodContract;

public class MainActivity extends AppCompatActivity {

    //Spinner for selecting blood group on search
    private Spinner mBloodTypeSpinner;

    private int mBloodType;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        // Setup FAB to open EditorActivity
        FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab);
        fab.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Intent intent = new Intent(MainActivity.this, EditorActivity.class);
                startActivity(intent);
            }
        });

        mBloodTypeSpinner = (Spinner) findViewById(R.id.spinner_bloodType);

        //Set the blood picker spinner
        setupBloodTypeSpinner();
    }


    /**Setup spinner for blood type pickup*/

    private void setupBloodTypeSpinner() {
        // Create adapter for spinner. The list options are from the String array it will use
        // the spinner will use the default layout
        ArrayAdapter bloodTypeSpinnerAdapter = ArrayAdapter.createFromResource(this,
                R.array.array_bloodType_options, android.R.layout.simple_spinner_item);

        // Specify dropdown layout style - simple list view with 1 item per line
        bloodTypeSpinnerAdapter.setDropDownViewResource(android.R.layout.simple_dropdown_item_1line);

        // Apply the adapter to the spinner
        mBloodTypeSpinner.setAdapter(bloodTypeSpinnerAdapter);

        // Set the integer mSelected to the constant values
        mBloodTypeSpinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
            @Override
            public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
                String selection = (String) parent.getItemAtPosition(position);
                if (!TextUtils.isEmpty(selection)) {
                    if (selection.equals(getString(R.string.a_positive))) {
                        mBloodType = BloodContract.DonorEntry.A_Positive;
                    } else if (selection.equals(getString(R.string.a_negative))) {
                        mBloodType = BloodContract.DonorEntry.A_Negative;
                    } else if (selection.equals(getString(R.string.b_positive))) {
                        mBloodType = BloodContract.DonorEntry.B_Positive;
                    }else if (selection.equals(getString(R.string.b_negative))) {
                        mBloodType = BloodContract.DonorEntry.B_Negative;
                    }else if (selection.equals(getString(R.string.o_positive))) {
                        mBloodType = BloodContract.DonorEntry.O_Positive;
                    }else if (selection.equals(getString(R.string.o_negative))) {
                        mBloodType = BloodContract.DonorEntry.O_Negative;
                    }else if (selection.equals(getString(R.string.ab_positive))) {
                        mBloodType = BloodContract.DonorEntry.AB_Positive;
                    }else if (selection.equals(getString(R.string.ab_negative))) {
                        mBloodType = BloodContract.DonorEntry.AB_Negative;
                    } else{
                        mBloodType = BloodContract.DonorEntry.TYPE_UNKNOWN;
                    }
                }
            }

            // Because AdapterView is an abstract class, onNothingSelected must be defined
            @Override
            public void onNothingSelected(AdapterView<?> parent) {
                mBloodType = BloodContract.DonorEntry.TYPE_UNKNOWN;
            }
        });
    }
}
2019-03-01 21:06:32.417 23087-23087/com.sarkerjr.greenBlood E/AndroidRuntime: FATAL EXCEPTION: main Process: com.sarkerjr.greenBlood, PID: 23087 java.lang.RuntimeException: Unable to start activity ComponentInfo{com.sarkerjr.greenBlood/com.sarkerjr.greenBlood.MainActivity}: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.Spinner.setAdapter(android.widget.SpinnerAdapter)' on a null object reference at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2778) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2856) at android.app.ActivityThread.-wrap11(Unknown Source:0) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1589) at android.os.Handler.dispatchMessage(Handler.java:106) at android.os.Looper.loop(Looper.java:164) at android.app.ActivityThread.main(ActivityThread.java:6494) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:438) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:807) Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.Spinner.setAdapter(android.widget.SpinnerAdapter)' on a null object reference at com.sarkerjr.greenBlood.MainActivity.setupBloodTypeSpinner(MainActivity.java:57) at com.sarkerjr.greenBlood.MainActivity.onCreate(MainActivity.java:41) at android.app.Activity.performCreate(Activity.java:7009) at android.app.Activity.performCreate(Activity.java:7000) at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1214) at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2731) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2856)  at android.app.ActivityThread.-wrap11(Unknown Source:0)  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1589)  at android.os.Handler.dispatchMessage(Handler.java:106)  at android.os.Looper.loop(Looper.java:164)  at android.app.ActivityThread.main(ActivityThread.java:6494)  at java.lang.reflect.Method.invoke(Native Method)  at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:438)  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:807)