2011-12-21 29 views
23

我試圖獲取微調控制器的位置(數量),以便在另一個活動中使用該微調器,並根據所選項目每次顯示不同的地圖。當我運行應用程序時,它崩潰了。這是第一個活動代碼:在Android中獲取微調器的位置

spinner1.getSelectedItemPosition(); 

文檔參考: http://developer.android.com/reference/android/widget/AdapterView.html#getSelectedItemPosition()

然而,在你的代碼,在一個地方

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

     }); 

    } 

} 

回答

63

得到微調的選擇是這樣的你引用它在你的setOnItemSelectedListener()之內。沒有必要輪詢微調,因爲onItemSelected方法作爲「位置」變量通過了位置。

所以,你可以把上面一行:

TestProjectActivity.this.number = position + 1; 

如果不解決這個問題,請張貼產生,當你的應用程序崩潰的錯誤消息。

+0

已經在代碼中,但是當我嘗試在另一個活動中使用「數字」時,它崩潰 – 2011-12-21 23:13:18

+0

嘗試將「數字」移動到應用程序類中。活動變量最好停留在活動中。或者,嘗試將設置數字設置爲靜態成員。在這裏閱讀:http://stackoverflow.com/q/4208886/602661 – 2011-12-21 23:20:05

+0

Briliant!我創建了一個應用程序類,它將保存我將在這兩個活動之間共享的數據。歡呼男人。 – 2011-12-22 17:02:08

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

此代碼是應該選擇這兩個複選框。
它有問題嗎?