2011-12-21 5 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 메서드가 위치 변수를 "position"변수로 전달하기 때문에 회 전자를 폴링 할 필요가 없습니다.

그래서 당신이 그 라인에 변경 될 수 있습니다 : 그래도 문제가 해결되지 않는 경우

TestProjectActivity.this.number = position + 1; 

을 때 앱 충돌 발생하는 오류 메시지를 게시하시기 바랍니다.

+0

이미 코드에 있지만 다른 활동에서 'number'를 사용하려고하면 충돌이 발생합니다. –

+0

"number"를 응용 프로그램 클래스로 이동해보십시오. 활동 변수는 활동 내에서 머물러있는 것이 좋습니다. 또는 숫자를 정적 멤버로 설정하십시오. 여기에 읽기 : http://stackoverflow.com/q/4208886/602661 –

+0

Briliant! 2 가지 활동간에 공유 할 데이터를 보유 할 응용 프로그램 클래스를 만들었습니다. 건배 남자. –

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

이 코드는 두 확인란을 모두 선택되어 있습니다.
거기에 문제가 있습니까?

관련 문제