2015-07-21 81 views
0

我试图从两个微调到下一个活动将字符串“año”和“artista”传递给我,并获得值“año”,但“artista”总是无效。我使用这种方法来获取其他活动中的值,并且它可以工作,但在这里,“artista”总是无效的。而且,我尝试了开关方法,但没有成功。从两个微调器获取值到字符串变量

我希望有人帮助我,告诉我我做错了什么。我阅读和前信息寻求帮助,

这是我的代码,

public class Buscar extends Activity implements OnItemSelectedListener{ 

    String año; 
    String artista; 

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

     Spinner spinnerBuscarAño = (Spinner) findViewById(R.id.añoSpinner); 
     String[] añoBuscar = {"1995", "2000", "2005"}; 
     spinnerBuscarAño.setAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_spinner_dropdown_item, añoBuscar)); 
     spinnerBuscarAño.setOnItemSelectedListener(this); 

     Spinner spinnerBuscarArtista = (Spinner) findViewById(R.id.artistaSpinner); 
     String[] artistaBuscar = {"Michael Jackson", "U2", "Depeche Mode"}; 
     spinnerBuscarArtista.setAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_spinner_dropdown_item, artistaBuscar)); 
     spinnerBuscarArtista.setOnItemSelectedListener(this); 

    } 

    /* 

    public void onItemSelected(AdapterView<?> parent, View view,int pos, long id) { 
     switch (parent.getId()) { 
      case R.id.añoSpinner: 
       año = parent.getItemAtPosition(pos).toString(); 
       break; 
      case R.id.artistaSpinner: 
       artista = parent.getItemAtPosition(pos).toString(); 
       break; 
      default: 
       break; 
     } 
    } 

    */ 

    @Override 
    public void onItemSelected(AdapterView<?> parent, View v, int position, 
           long id){ 
     // TODO Auto-generated method stub 

     Spinner spinner = (Spinner) parent; 
     if(spinner.getId() == R.id.añoSpinner) 
     { 
      año = parent.getItemAtPosition(position).toString(); 
     } 
     else if(spinner.getId() == R.id.artistaSpinner) 
     { 
      artista = parent.getItemAtPosition(position).toString(); 
     } 

    } 

    @Override 
    public void onNothingSelected(AdapterView<?> arg0) { 
     // TODO Auto-generated method stub 
    } 

    public void Buscar() { 

     Button buttonBuscar = (Button) findViewById(R.id.buscar); 

     buttonBuscar.setOnClickListener(new View.OnClickListener() { 

      @Override 
      public void onClick(View arg0) { 

       Toast.makeText(getApplicationContext(),artista, Toast.LENGTH_SHORT).show(); 


       Intent intentBuscar = new Intent(Buscar.this, ListadoMusica.class); 
       intentBuscar.putExtra("myaño", año); 
       intentBuscar.putExtra("myartista", artista); 
       startActivity(intentBuscar); 


      } 
     }); 

    } 

} 

如果有人能帮助我,

由于提前,

+0

你有当值检查在B中uscar()'缩小问题是否在这个Activity或接收Activity? – codeMagic

+0

我想在此活动中选择两个纺纱器的值并发送到另一个活动。我不明白为什么这段代码在这里不起作用,因为我可以在另一个活动中使用此代码挑选两个spinners的值, – Rec

+0

您是否检查过Buscast()中是否有值,并且使用日志或断点来缩小范围如果问题出在本活动或接收活动中? – codeMagic

回答

0

也许你正在尝试用另一个名字捕捉一串意图。

试试这个代码:

SpinnerTest.java

public class SpinnerTest extends Activity implements AdapterView.OnItemSelectedListener { 


    String year; 
    String artist; 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.spinner_activity); 

     Spinner spinnerYear = (Spinner) findViewById(R.id.spinner1); 
     final String[] years = {"1995", "2000", "2005"}; 
     spinnerYear.setAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_spinner_dropdown_item, years)); 
     spinnerYear.setOnItemSelectedListener(this); 

     Spinner spinnerArtists = (Spinner) findViewById(R.id.spinner2); 
     final String[] artists = {"Michael Jackson", "U2", "Depeche Mode"}; 
     spinnerArtists.setAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_spinner_dropdown_item, artists)); 
     spinnerArtists.setOnItemSelectedListener(this); 

     Button btnSearch = (Button) findViewById(R.id.btnSearch); 
     btnSearch.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View view) { 
       Intent searchIntent = new Intent(SpinnerTest.this, SearchActivity.class); 
       searchIntent.putExtra("year", year); 
       searchIntent.putExtra("artist", artist); 
       startActivity(searchIntent); 

      } 
     }); 
    } 

    @Override 
    public void onItemSelected(AdapterView<?> adapterView, View view, int i, long l) { 
     switch (adapterView.getId()){ 
      case R.id.spinner1: 
       year = adapterView.getSelectedItem().toString(); 
       Toast.makeText(SpinnerTest.this, year, Toast.LENGTH_LONG).show(); 
       break; 
      case R.id.spinner2: 
       artist = adapterView.getSelectedItem().toString(); 
       Toast.makeText(SpinnerTest.this, artist, Toast.LENGTH_LONG).show(); 
       break; 
     } 

    } 

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

    } 
} 

SearchActivity.java:

public class SearchActivity extends ActionBarActivity { 

    String year; 
    String artist; 


    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_receive_spinner_value); 
     TextView txtYear = (TextView) findViewById(R.id.txtYear); 
     TextView txtArtist = (TextView) findViewById(R.id.txtArtist); 

     if(getIntent().hasExtra("year")){ 
      year = getIntent().getStringExtra("year"); 
      txtYear.setText(year); 
     } 
     if(getIntent().hasExtra("artist")){ 
      artist = getIntent().getStringExtra("artist"); 
      txtArtist.setText(artist); 
     } 
    } 


} 

它为我

+0

嗨胡安,感谢您的回答,但它不是为我工作,奇怪的想法是我可以得到两个纺纱厂的价值在其他活动,但在这一个它不起作用。再次“艺术家”是无效的,并且祝酒也是无效的, – Rec

+0

我复制你的代码,它适用于我 –

+0

这是我不明白,代码也适用于我在其他活动,但不是在这里 – Rec