2017-08-07 63 views
0

我是新来的android,我试图实现级联微调。当我选择第一个微调器时,它应该根据第一个微调器选择填充第二个微调器选项。我已经差不多完成了,但在第二次微调中,我无法选择该值。当我选择它正在消失的价值。请帮助我。Cascading Spinner Not Wokring

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) { 

    } 
} 

回答

0

发现问题,我已修复它。

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

我已经改变了getApplicationConetxt()这个。它的工作原理:-)

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