如何从 Android 中的对话框片段中删除 "OK" 按钮
How to remove "OK" button from Dialog fragment in Android
我正在尝试完全删除“确定”按钮,以便在选择项目时自动单击它。我注意到这是 Android 的首选方式。我不需要 "cancel" 按钮,因为我想防止选择空值。
对话框片段
public class SingleChoiceClass extends
DialogFragment {`
final CharSequence[] items = {"b1", "b2", "b3", "b4"};
String selection;
@NonNull
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());`
builder.setTitle("Choose").setSingleChoiceItems(items, -1, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface arg0, int arg1) {
switch (arg1){
case 0:
selection = (String) items[arg1];
break;
case 1:
selection = (String) items[arg1];
break;
case 2:
selection = (String) items[arg1];
break;
case 3:
selection = (String) items[arg1];
break;
}
}
}).setPositiveButton("OK", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
// Display toast with the user's selection
Toast.makeText(getActivity(), "Your choice is : " + selection, Toast.LENGTH_SHORT).show();
}
});
return builder.create();
}
}
代码按原样运行良好,我只想获取所选项目而无需单击 "OK" 按钮。它节省了用户的时间。
我不确定这是否是 Android 推荐的执行此操作的方法,但我终于想出了一种实现我想要的确切行为的方法。
public class SingleChoiceClass extends
DialogFragment {
final CharSequence[] items = {"b1", "b2", "b3", "b4"};
String selection;
@NonNull
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
final MainActivity activity = (MainActivity) getActivity();
builder.setTitle("Choose")
.setSingleChoiceItems(items, -1, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface arg0, int arg1) {
switch (arg1){
case 0:
selection = (String) items[arg1];
Toast.makeText(getActivity(), "" + selection,Toast.LENGTH_SHORT).show();
// Do your magic
dismiss();
break;
case 1:
selection = (String) items[arg1];
Toast.makeText(getActivity(), "" + selection,Toast.LENGTH_SHORT).show();
// Do your magic
dismiss();
break;
case 2:
selection = (String) items[arg1];
Toast.makeText(getActivity(), "" + selection,Toast.LENGTH_SHORT).show();
// Do your magic
dismiss();
break;
case 3:
selection = (String) items[arg1];
Toast.makeText(getActivity(), "" + selection,Toast.LENGTH_SHORT).show();
// Do your magic
dismiss();
break;
}
}
}).setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
//Exit
activity.finish(); //Or find a way to relaunch Dialog
}
});
return builder.create();
}
}
我正在尝试完全删除“确定”按钮,以便在选择项目时自动单击它。我注意到这是 Android 的首选方式。我不需要 "cancel" 按钮,因为我想防止选择空值。
对话框片段
public class SingleChoiceClass extends
DialogFragment {`
final CharSequence[] items = {"b1", "b2", "b3", "b4"};
String selection;
@NonNull
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());`
builder.setTitle("Choose").setSingleChoiceItems(items, -1, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface arg0, int arg1) {
switch (arg1){
case 0:
selection = (String) items[arg1];
break;
case 1:
selection = (String) items[arg1];
break;
case 2:
selection = (String) items[arg1];
break;
case 3:
selection = (String) items[arg1];
break;
}
}
}).setPositiveButton("OK", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
// Display toast with the user's selection
Toast.makeText(getActivity(), "Your choice is : " + selection, Toast.LENGTH_SHORT).show();
}
});
return builder.create();
}
}
代码按原样运行良好,我只想获取所选项目而无需单击 "OK" 按钮。它节省了用户的时间。
我不确定这是否是 Android 推荐的执行此操作的方法,但我终于想出了一种实现我想要的确切行为的方法。
public class SingleChoiceClass extends
DialogFragment {
final CharSequence[] items = {"b1", "b2", "b3", "b4"};
String selection;
@NonNull
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
final MainActivity activity = (MainActivity) getActivity();
builder.setTitle("Choose")
.setSingleChoiceItems(items, -1, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface arg0, int arg1) {
switch (arg1){
case 0:
selection = (String) items[arg1];
Toast.makeText(getActivity(), "" + selection,Toast.LENGTH_SHORT).show();
// Do your magic
dismiss();
break;
case 1:
selection = (String) items[arg1];
Toast.makeText(getActivity(), "" + selection,Toast.LENGTH_SHORT).show();
// Do your magic
dismiss();
break;
case 2:
selection = (String) items[arg1];
Toast.makeText(getActivity(), "" + selection,Toast.LENGTH_SHORT).show();
// Do your magic
dismiss();
break;
case 3:
selection = (String) items[arg1];
Toast.makeText(getActivity(), "" + selection,Toast.LENGTH_SHORT).show();
// Do your magic
dismiss();
break;
}
}
}).setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
//Exit
activity.finish(); //Or find a way to relaunch Dialog
}
});
return builder.create();
}
}