Пользователь выбирает из 4 вариантов того, как долго будет задержка в счетчике (например, 15, 30, 60 секунд или нет задержки), затем, когда он нажимает кнопку отправки, задержка вступит в силу до того, как сообщение действительно отправится.затем, когда он отправит сообщение, появится тост, уведомляющий пользователя о том, что его сообщение отправлено.
Вопрос в том, как реализовать задержку на счетчике?Это будет в OnitemSelected?тогда задержать это там?или что-то еще?
Вот код:
public class KAHTextApp extends Activity {
Button btnRecipient;
Button btnSend;
EditText editTextRecipient;
EditText editTextNewMessage;
Spinner spinnerTimeDelay;
private static final int CONTACT_PICKER_RESULT = 1001;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.compose_message);
btnRecipient = (Button) findViewById(R.id.button_recipient_picker);
btnSend = (Button) findViewById(R.id.button_send);
editTextRecipient = (EditText) findViewById(R.id.editText_recipient);
editTextNewMessage = (EditText) findViewById(R.id.editText_new_message);
spinnerTimeDelay = (Spinner) findViewById(R.id.spinner_delay);
ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(
this, R.array.delay_array, android.R.layout.simple_spinner_item);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spinnerTimeDelay.setAdapter(adapter);
spinnerTimeDelay.setOnItemSelectedListener(new TimeDelay());
btnRecipient.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
Intent intent = new Intent(Intent.ACTION_PICK, ContactsContract.Contacts.CONTENT_URI);
startActivityForResult(intent, CONTACT_PICKER_RESULT);
}
});
}
@Override
public void onActivityResult(int reqCode, int resultCode, Intent data) {
super.onActivityResult(reqCode, resultCode, data);
switch (reqCode) {
case (CONTACT_PICKER_RESULT):
if (resultCode == Activity.RESULT_OK) {
StringBuilder sb = new StringBuilder();
Uri contactData = data.getData();
Cursor contactsCursor = managedQuery(contactData,
null, null, null, null);
if (contactsCursor.moveToFirst()) {
String id = contactsCursor.getString(contactsCursor
.getColumnIndexOrThrow(ContactsContract.Contacts._ID));
String name = contactsCursor.getString(contactsCursor
.getColumnIndexOrThrow(ContactsContract.Contacts.DISPLAY_NAME));
String hasPhoneNumber = contactsCursor.getString(contactsCursor
.getColumnIndexOrThrow(ContactsContract.Contacts.HAS_PHONE_NUMBER));
sb.append(name);
if (Integer.parseInt(hasPhoneNumber) > 0) {
Uri myPhoneUri = Uri.withAppendedPath(
ContactsContract.CommonDataKinds.Phone.CONTENT_URI, id);
Cursor phoneCursor = managedQuery(
myPhoneUri, null, null, null, null);
for (phoneCursor.moveToFirst(); !phoneCursor.isAfterLast(); phoneCursor.moveToNext()) {
String phoneNumber = phoneCursor.getString(phoneCursor
.getColumnIndexOrThrow(ContactsContract.CommonDataKinds.Phone.NUMBER));
sb.append(phoneNumber);
}
} else {
sb.append("This contact doesn't have a phone number");
}
editTextRecipient.setText(sb.toString());
}
}
break;
}
btnSend.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
String phoneNo = editTextRecipient.getText().toString();
String message = editTextNewMessage.getText().toString();
if (phoneNo.length()>0 && message.length()>0)
Toast.makeText(getBaseContext(),
"Message sent!",
Toast.LENGTH_SHORT).show();
/*sendSMS(phoneNo, message); */
else
Toast.makeText(getBaseContext(),
"Please enter both phone number and message.",
Toast.LENGTH_SHORT).show();
}
});
}
и вот код для счетчика:
public class TimeDelay implements OnItemSelectedListener {
public void onItemSelected(AdapterView<?> parent,
View view, int pos, long id) {
Toast.makeText(parent.getContext(), "The delay is " +
parent.getItemAtPosition(pos).toString(), Toast.LENGTH_LONG).show();
}
public void onNothingSelected(AdapterView<?> parent) {
// Do nothing.
}
}