2011-12-21 43 views
23

Tôi đang cố gắng lấy vị trí (số) của spinner khi được chọn để sử dụng nó trong một Hoạt động khác sẽ hiển thị bản đồ khác nhau mỗi lần tùy thuộc vào mục được chọn. khi tôi chạy ứng dụng nó bị treo. đây là đoạn code Hoạt động đầu tiên:Lấy vị trí của một spinner trong Android

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); 
      } 

     }); 

    } 

} 

Trả lời

63

Cách để có được sự lựa chọn của spinner là:

spinner1.getSelectedItemPosition(); 

Tài liệu tham khảo: http://developer.android.com/reference/android/widget/AdapterView.html#getSelectedItemPosition()

Tuy nhiên, trong mã của bạn, một nơi bạn đang tham chiếu nó nằm trong số setOnItemSelectedListener() của bạn. Nó không phải là cần thiết để thăm dò ý kiến ​​spinner, bởi vì các phương pháp onItemSelected được thông qua vị trí như biến "vị trí".

Vì vậy, bạn có thể thay đổi điều đó dòng:

TestProjectActivity.this.number = position + 1; 

Nếu điều đó không giải quyết được vấn đề, xin vui lòng gửi thông báo lỗi được tạo ra khi bạn bị treo ứng dụng.

+0

Đã có trong mã, nhưng khi tôi cố gắng sử dụng 'số' trong một hoạt động khác, nó treo –

+0

Thử di chuyển "số" vào một lớp ứng dụng. Các biến hoạt động tốt hơn ở trong hoạt động. Cách khác, hãy thử đặt số thành một thành viên tĩnh. đọc tại đây: http://stackoverflow.com/q/4208886/602661 –

+0

Briliant! Tôi đã tạo một lớp ứng dụng sẽ giữ dữ liệu mà tôi sẽ chia sẻ giữa 2 hoạt động. Chúc mừng người đàn ông. –

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(); 
    } 
} 

Mã này có nghĩa vụ phải chọn cả hai hộp kiểm.
Có vấn đề gì với nó?

Các vấn đề liên quan