java - 填充微调器时 dataAdapter 显示为 null 但它包含值

标签 java android spinner

我正在尝试从数据库中将一些数据提取到微调器中,但它显示以下错误:-

07-21 05:54:42.450: E/AndroidRuntime(11918): FATAL EXCEPTION: main
07-21 05:54:42.450: E/AndroidRuntime(11918): Process: com.example.teste1, PID: 11918
07-21 05:54:42.450: E/AndroidRuntime(11918): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.teste1/com.example.teste1.MainActivity}: java.lang.NullPointerException
07-21 05:54:42.450: E/AndroidRuntime(11918): Caused by: java.lang.NullPointerException
07-21 05:54:42.450: E/AndroidRuntime(11918):    at com.example.teste1.MainActivity.loadSpinnerData(MainActivity.java:79)
07-21 05:54:42.450: E/AndroidRuntime(11918):    at com.example.teste1.MainActivity.onCreate(MainActivity.java:32)

第 79 行是:- spinner.setAdapter(dataAdapter);

第 32 行是:- loadSpinnerData();

我已经使用以下方法检查了 dataAdapter 是否为空:-

System.out.println(dataAdapter.getItem(5).toString());

但它显示第 5 个索引处的值,这意味着 dataAdapter 不为 null。

这是我的 MainActivity 类:-

public class MainActivity extends Activity implements OnItemSelectedListener {
    Button btnDisplay;
    ImageButton btnAdd;
    Spinner spinner;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        btnAdd = (ImageButton) findViewById(R.id.btnAdd);
        btnDisplay = (Button) findViewById(R.id.btnDisplay);
        spinner = (Spinner) findViewById(R.id.spinner1);

        // Loading spinner data from database
        try {
            loadSpinnerData();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

     // Spinner click listener
        spinner.setOnItemSelectedListener(this);

        MyLayoutOperation.add(this, btnAdd);
        MyLayoutOperation.display(this, btnDisplay);

    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }

 /**
 * Function to load the spinner data from SQLite database
 * @throws IOException 
 * */
    private void loadSpinnerData() throws IOException {

        // database handler
        DBHelper db = new DBHelper(getApplicationContext());


        // Spinner Drop down elements
       List<String> products = db.getAllProducts();

        // Creating adapter for spinner
        ArrayAdapter<String> dataAdapter = new ArrayAdapter<String>(this,
            android.R.layout.simple_spinner_item, products);

        // Drop down layout style - list view with radio button
        dataAdapter
            .setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);

        //For testing purpose only
        System.out.println(dataAdapter.getItem(5).toString());

        // attaching data adapter to spinner
        spinner.setAdapter(dataAdapter);

    }

最佳答案

你的微调器似乎为空。尝试两件事:-

1) 检查您是否确实创建了一个 ID 为 spinner1spinner 。 2) 如果您已经创建了微调器,则尝试通过对其执行 Sysout 来检查其中的值。

关于java - 填充微调器时 dataAdapter 显示为 null 但它包含值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24862713/

相关文章:

java - 无纹理四边形未在 OpenGL ES 3.0 中渲染

Android:将微调器和按钮对齐在同一行?

android - 为什么我的自定义微调器填充了我的包名称?

java - 在 Oracle 上调用存储过程抛出 ORA-06550 异常

java - 如何在桥牌游戏中切换 Card Deck shuffle() 中的牌位置

Java:如何将集合划分为等价类?

Android:Logcat] 在运行 Google 的示例记事本应用程序时找不到设备

java - 我在 android 应用程序中的 MediaPlayer 上做错了什么

java - 如何发送认证字符串建立TCP连接?

android - setdropdownview 预期资源标识符