级联微调器不工作

Cascading Spinner Not Wokring

我是 android 的新手,我正在尝试实现级联微调器。当我 select 第一个微调器时,它应该根据第一个微调器 selection 填充第二个微调器选项。我几乎完成了,但在第二个微调器中我无法 select 该值。当我 select 它正在消失的价值。请帮助我。

import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.Spinner;
import android.widget.Toast;

public class DummyMain extends AppCompatActivity implements AdapterView.OnItemSelectedListener {
    public Spinner spinner1, spinner2;
    public String[] spinner1Values = {"A", "B"}, valuesForA = {"1", "2"}, valuesForB = {"3", "4", "5", "1"};
    public ArrayAdapter<String> adapterForSpinner1, adapterForSpinner2;

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

        spinner1 = (Spinner) findViewById(R.id.spinner1);
        spinner2 = (Spinner) findViewById(R.id.spinner2);

        adapterForSpinner1 = new ArrayAdapter<String>(this,
                android.R.layout.simple_spinner_item, spinner1Values);
        adapterForSpinner1.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
        spinner1.setAdapter(adapterForSpinner1);
        spinner1.setOnItemSelectedListener(this);
    }

    @Override
    public void onItemSelected(AdapterView<?> parent, View view, int i, long l) {
        Toast.makeText(this, "Result "+spinner1.getSelectedItem().toString(), Toast.LENGTH_SHORT).show();
        if (parent.getId() == R.id.spinner1) {
            if (spinner1.getSelectedItem().toString().equals("A")) {
                adapterForSpinner2 = new ArrayAdapter<String>(getApplicationContext(),
                        android.R.layout.simple_spinner_item,valuesForA);
                adapterForSpinner2.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
                spinner2.setAdapter(adapterForSpinner2);
                spinner2.setOnItemSelectedListener(this);

            } else {
                adapterForSpinner2 = new ArrayAdapter<String>(getApplicationContext(),
                        android.R.layout.simple_spinner_item,valuesForB);
                adapterForSpinner2.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
                spinner2.setAdapter(adapterForSpinner2);
                spinner2.setOnItemSelectedListener(this);
            }
        }
    }

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

    }
}

找到问题,我已经解决了。

ArrayAdapter<String> adapterForSpinner2 = new ArrayAdapter<String>(getApplicationContext(),
                            android.R.layout.simple_spinner_item, valuesForB);

我已将 getApplicationConetxt() 更改为 this。它有效:-)

ArrayAdapter<String> adapterForSpinner2 = new ArrayAdapter<String>(this,
                            android.R.layout.simple_spinner_item, valuesForB);

尝试将此添加到您的 DummyMain

@Override
    public void onPointerCaptureChanged(boolean hasCapture) {
    }