2011-12-21 19 views
23

Seçilen öğeye bağlı olarak her seferinde farklı bir harita gösterecek başka bir Etkinlik'de kullanmak üzere seçildiğinde, döndürücünün konumunu (numarasını) almaya çalışıyorum. uygulamayı çalıştırdığımda çöker.Android'de bir döndürücünün pozisyonunu alın

spinner1.getSelectedItemPosition(); 

Dokümantasyon referans: http://developer.android.com/reference/android/widget/AdapterView.html#getSelectedItemPosition()

Ancak, kodunuzda, tek bir yerde

public class TestProjectActivity extends Activity { 
    public Spinner spinner1; 
    public Integer number; 
    private Button valideButton; 

    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 
     MySpinner(); 
     valide_button(); 

    } 

    public void MySpinner() { 

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

     ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(
       this, R.array.num, android.R.layout.simple_spinner_item); 
             adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 
     spinner1.setAdapter(adapter); 

     spinner1.setOnItemSelectedListener(new OnItemSelectedListener() { 

      public void onItemSelected(AdapterView<?> parentView, 
        View selectedItemView, int position, long id) { 
       // Object item = parentView.getItemAtPosition(position); 

       TestProjectActivity.this.number = spinner1 
         .getSelectedItemPosition() + 1; 

      } 

      public void onNothingSelected(AdapterView<?> arg0) {// do nothing 
      } 

     }); 

    } 

    public void valide_button() { 

     valideButton = (Button) findViewById(R.id.valide_button); 
     valideButton.setOnClickListener(new View.OnClickListener() { 

      public void onClick(View v) { 

       Intent intent = new Intent(TestProjectActivity.this, 
         MetroMapActivity.class); 
       startActivity(intent); 
      } 

     }); 

    } 

} 

cevap

63

eğiren seçimdir almanın yolu: bu ilk Aktivite kodudur referans olarak, setOnItemSelectedListener() içinde. onItemSelected metodu, pozisyonu "pozisyon" değişkeni olarak geçtiği için eğiriciyi yoklamak gerekli değildir.

Yani o duruşu için değişebilir: Bu sorunu çözmezse

TestProjectActivity.this.number = position + 1; 

, ne zaman uygulama çöker oluşturulan hata mesajını gönderin.

+0

Zaten kodda, ancak başka bir etkinlikte 'sayı' kullanmaya çalıştığımda, –

+0

çöküyor "sayı" bir uygulama sınıfında hareket ettirmeyi deneyin. Aktivite değişkenleri aktivitede kalmaktan daha iyidir. Alternatif olarak, sayıyı statik üye olarak ayarlamayı deneyin. buradan okuyun: http://stackoverflow.com/q/4208886/602661 –

+0

Briliant! 2 etkinlik arasında paylaşacağım verileri tutacak bir uygulama sınıfı oluşturdum. Şerefe ahbap. –

0
final int[] positions=new int[2]; 
    Spinner sp=findViewByID(R.id.spinner); 

    sp.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { 

     @Override 
     public void onItemSelected(AdapterView<?> arg0, View arg1, 
       int arg2, long arg3) { 
      // TODO Auto-generated method stub 
      Toast.makeText(arg2....); 
     } 

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

     } 
    }); 
0
if (position ==0) { 
    if (rYes.isChecked()) { 
     Toast.makeText(SportActivity.this, "yes ur answer is right", Toast.LENGTH_LONG).show(); 
    } else if (rNo.isChecked()) { 
     Toast.makeText(SportActivity.this, "no.ur answer is wrong", Toast.LENGTH_LONG).show(); 
    } 
} 

Bu kod iki onay kutusunu seçmek gerekiyordu.
Bununla ilgili bir sorun mu var?

İlgili konular