DialogFragment
カスタム着信音セレクターをポップアップする があります。Ringtone
ただし、いずれかを選択して [OK] をクリックしても適切な値が得られません。以下の何が間違っているのですか?
ダイアログはこれで作成されます
@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
どんな助けでも大歓迎です。