У меня есть DialogFragment
, который выдает настраиваемый селектор мелодий звонка. Однако после выбора одного из них он не получает нужного Ringtone
и щелкает OK. Любая идея, что неправильно ниже?RingtoneManager Cursor Not Returning Selected Ringtone Details
Диалог создается с помощью этой
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
rm = new RingtoneManager(getActivity());
ringtones = rm.getCursor();
int selected = -1;
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
builder.setTitle(R.string.ringtone);
builder.setSingleChoiceItems(ringtones,
selected,
ringtones.getColumnName(RingtoneManager.TITLE_COLUMN_INDEX),
mChoiceListener);
builder.setPositiveButton("OK", this);
builder.setNegativeButton("Cancel", this);
return builder.create();
}
private DialogInterface.OnClickListener mChoiceListener =
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int position) {
ringtones.moveToPosition(position);
}
};
При выборе кнопки OK, она захватывается
public void onClick(DialogInterface dialog, int which) {
Log.d("DayPickerFragment", "onClick");
switch(which) {
case Dialog.BUTTON_NEGATIVE:
dialog.cancel();
break;
case Dialog.BUTTON_POSITIVE:
Uri uri = rm.getRingtoneUri(ringtones.getPosition());
Ringtone r = RingtoneManager.getRingtone(getActivity(), uri);
/*** etc ***/
/*** returned ringtone doesn't match what was selected ***/
dialog.dismiss();
break;
}
}
Является ли это вызвано метод rm.getRingtoneUri(position)
не соответствующий мелодии курсор ? Если да, то как вы получаете реальный Uri
выбранного пункта?
Любая помощь приветствуется.