【问题标题】:Spinner OnItemSelectedListener not working properly with 2 spinners in 1 activitySpinner OnItemSelectedListener 无法在 1 个活动中使用 2 个微调器正常工作
【发布时间】:2017-03-18 02:06:33
【问题描述】:

我一直在 android studio 中进行编码,在 1 个活动中使用 2 个微调器。当我选择一个项目时,即使微调器有不同的变量,它也不会调用监听器。

以下是从数据库中填充微调器以及选择值的相关代码(在 loadSYData 函数中)

public void loadQtrData() {
    Cursor cursor = myDb.getQtr();
    ArrayList<String> qtrLabel = new ArrayList<>();
    ArrayAdapter<String> qtrAdapter = new ArrayAdapter<String>(this, R.layout.spinner_item, qtrLabel);
    qtrAdapter.setDropDownViewResource(R.layout.spinner_item);
    spinnerQtrParent.setAdapter(qtrAdapter);
    while(cursor.moveToNext()){
        String label = cursor.getString(cursor.getColumnIndex("SC_Quarter"));
        qtrLabel.add(label);
    }
}

public void loadSYData(){
    Cursor cursor = myDb.getSY();
    ArrayList<String> syLabel = new ArrayList<>();
    ArrayAdapter<String> syAdapter = new ArrayAdapter<String>(this, R.layout.spinner_item, syLabel);
    syAdapter.setDropDownViewResource(R.layout.spinner_item);
    spinnerSYParent.setAdapter(syAdapter);
    while(cursor.moveToNext()){
        String label = cursor.getString(cursor.getColumnIndex("SY"));
        syLabel.add(label);
    }
    spinnerSYParent.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
        @Override
        public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
            sy = "Success";
        }

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

        }
    });
}

我还放了一个祝酒词,说成功只是为了检查侦听器是否被调用。但是 toast 过程没有执行。

【问题讨论】:

    标签: android sqlite spinner


    【解决方案1】:

    可能是您的光标没有数据或者它没有移动到第一个位置 检查此代码并查看您的微调器事件是否设置的天气。

        public void loadSYData(){
            Cursor cursor = myDb.getSY();
            ArrayList<String> syLabel = new ArrayList<>();
            ArrayAdapter<String> syAdapter = new ArrayAdapter<String>(this, R.layout.spinner_item, syLabel);
            syAdapter.setDropDownViewResource(R.layout.spinner_item);
            spinnerSYParent.setAdapter(syAdapter);
            // add this line to move cursor to 1st position.
            cursor.moveToFirst();
            while(cursor.moveToNext()){
                String label = cursor.getString(cursor.getColumnIndex("SY"));
                syLabel.add(label);
            }
            // Put debug point or print some thing here to confirm
            spinnerSYParent.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
                @Override
                public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
                    sy = "Success";
                }
    
                @Override
                public void onNothingSelected(AdapterView<?> parent) {
    
                }
            });
        }
    

    【讨论】:

    • 我已经尝试并添加了“Toast.makeText(this, "After population", Toast.LENGTH_SHORT);"吐司没有执行。
    • 添加了我的代码?那么一定有什么错误。检查日志
    • W/InputEventReceiver:尝试完成一个输入事件,但输入事件接收器已被释放。
    • 是的,我添加了 moveToFirst()
    • 添加错误日志和数据库代码。 b'z 我认为问题出在数据库代码中
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-04
    • 2019-09-19
    • 1970-01-01
    相关资源
    最近更新 更多