2012-10-25 3 views
0

나는 안드로이드 신참이다. 선택한 스피너 텍스트를 SMS 텍스트로 전달하여 선택한 번호로 보내기 위해 버튼을 눌러서 보내는 방법을 모르겠다. 나는 누군가가 나를 가르쳐 줄 수 있으면 행복하다.선택한 스피너 아이템을 받고 SMS를 통해 보내는 방법

public class MainActivity extends Activity { //all starts here 
    String[] location; 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     location = getResources().getStringArray(R.array.location_array); 
     Spinner s1 = (Spinner) findViewById(R.id.spinner1); 
     ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_single_choice, location); 
     s1.setAdapter(adapter); 
     s1.setOnItemSelectedListener(new OnItemSelectedListener() 
     { 
      public void onItemSelected(AdapterView<?> arg0, View arg1, int arg2, long arg3) 
      { 
       int index = arg0.getSelectedItemPosition(); 
       Toast.makeText(getBaseContext(), "You have selected " + location[index], Toast.LENGTH_SHORT).show(); 

      } 

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

     }); 
    } 

     public void onClick(View v) {   //<--**HERE IS THE PROBLEM** 
     sendSMS("5556", "+location [index]"); //<--**HERE IS THE PROBLEM** 
    } 



    //?sends an SMS message to another device? 
    private void sendSMS(String phoneNumber, String message) 
    { 
     SmsManager sms = SmsManager.getDefault(); 
     sms.sendTextMessage(phoneNumber, null, message, null, null); 
    } 

} 

// - 여기에서 끝나야합니다

+0

sendSMS("5556", "+location [index]"); 넣어 ("5556", "+ 위치 [인덱스]"); public void onItemSelected (AdapterView arg0,보기 arg1, int arg2, long arg3) { int index = arg0.getSelectedItemPosition(); Toast.makeText (getBaseContext(), "선택한 위치 + 색인 [색인], Toast.LENGTH_SHORT) .show(); } – Akram

+0

@Ken 제 답변을 참조하십시오. 문제가 있다면 알려주십시오. –

답변

0

먼저 저장 선택된 값 하나의 문자열 변수 다음 SMS로 전송하고 또 다른 옵션은 내 나쁜 영어 통신, onItemSelected() 함수 외부 미안 int index 변수를 선언이지만 것 문제를 해결하려면 아래 링크를 참조하십시오.

Spinners in Android

대신 코드의 코드 아래 사용합니다.

public class MainActivity extends Activity { //all starts here 
    String[] location; 
    int index; 
    String mSelectedItem; 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     location = getResources().getStringArray(R.array.location_array); 
     Spinner s1 = (Spinner) findViewById(R.id.spinner1); 
     ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_single_choice, location); 
     s1.setAdapter(adapter); 
     s1.setOnItemSelectedListener(new OnItemSelectedListener() 
     { 
      public void onItemSelected(AdapterView<?> arg0, View arg1, int arg2, long arg3) 
      { 
       index = arg0.getSelectedItemPosition(); 
       //OR you can also store selected item using below line. 
       mSelectedItem=arg0.getSelectedItem().toString(); 
       Toast.makeText(getBaseContext(), "You have selected " + location[index], Toast.LENGTH_SHORT).show(); 
      } 

      public void onNothingSelected(AdapterView<?> arg0){ 

      } 

     }); 
    } 

    public void onClick(View v) { 
     sendSMS("5556", location [index]); 
     //OR you can also send sms using below code. 
     sendSMS("5556", mSelectedItem); 
    }  

    //?sends an SMS message to another device? 
    private void sendSMS(String phoneNumber, String message) 
    { 
     SmsManager sms = SmsManager.getDefault(); 
     sms.sendTextMessage(phoneNumber, null, message, null, null); 
    } 
} 
+0

안녕 Dipak, 코드 예를 들어 주시겠습니까? 감사. 나는 이미 적어도 12 시간 동안 이것을 해결하기 위해 열심히 노력하고있다. – Ken

+0

@Ken 편집 된 답변을 참조하십시오. –

+0

감사 Dipak. 'int index'선언은 전역 적으로 문제를 해결했습니다. 다시 한번 감사드립니다! – Ken

1

이 sendSMS 넣어

public void onItemSelected(AdapterView<?> arg0, View arg1, int arg2, long arg3) 
      { 

       Toast.makeText(getBaseContext(), "You have selected " + location[arg2], Toast.LENGTH_SHORT).show(); 
       sendSMS("5556", location[arg2]); 
      } 
+0

나는 이것을 시도했지만 성공하지 못했습니다. 그것은 여전히 ​​+ 위치 [index]를 보내지 만 인덱스는 Spinner 메뉴에서 선택되지 않은 문자로 바뀌 었습니다. – Ken

+0

@Ken은 제 편집을 확인했습니다. 실제로 당신이 인수로부터 색인을 가져 오는 줄 알았지 만, 그렇지 않았습니다. 인수 int arg2 ,는 선택된 항목의 색인입니다. – Akram

+0

수신자 측에서 원하지 않는 텍스트를 수신했습니다. 즉, + 위치 [> 선택한 스피너 (문자열 배열에서)를 할당하고 SMS를 보내려면 버튼을 누르고 수신자는 다음 값만 수신해야합니다. 캐릭터 라인 배열 만. 그리고 어떻게 sendSMS()를 놓을 수 있을지 전혀 모르겠다. – Ken

관련 문제