setSingleChoiceItems 和 setPositiveButton Android
setSingleChoiceItems and setPositiveButton Android
有没有办法把多选框变成一次只能选一个选框?
所以这是我正在尝试解决的问题,使用对话框警报框和单选-多选。
public class MainActivity extends Activity {
CharSequence[] items = {"FIT", "Fakultet za menadzment", "Fakultet digitalnih umetnosti"};
private String selectedItem;
public int proba;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
private void launchWebPage(String url){
Intent i = new Intent(Intent.ACTION_VIEW);
i.setData(Uri.parse(url));
startActivity(i);
}
public void dialog(View v){
showDialog(0);
}
public void dialog1(View v){
Toast.makeText(getBaseContext(), "Nema deklarisanu funkciju.", Toast.LENGTH_LONG).show();
}
public void dialog2(View v){
Toast.makeText(getBaseContext(), "Nema deklarisanu funkciju.", Toast.LENGTH_LONG).show();
}
public Dialog onCreateDialog(final int id) {
final AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
builder.setTitle("Odabir");
builder.setSingleChoiceItems(items, 1, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
selectedItem = (String) items[i];
proba = i;
}
});
builder.setPositiveButton("Ok", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int position) {
Toast.makeText(getBaseContext(), "Test", Toast.LENGTH_SHORT).show();
}
});
builder.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
Toast.makeText(getBaseContext(), "Cancel pritisnuto!", Toast.LENGTH_SHORT).show();
}
});
builder.show();
return null;
}
}
您需要使用 radioButon
而不是 checkbox
。
https://developer.android.com/guide/topics/ui/controls/radiobutton.html
使用setSingleChoiceItems()
on AlertDialog.Builder
的变种之一。不管文档怎么说,这应该使用单选按钮,而不是复选框。
终于弄明白了,如果有人需要类似的东西,这是缺少的代码。
public Dialog onCreateDialog(final int id) {
final AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
builder.setTitle("Odabir");
builder.setSingleChoiceItems(items, -1, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
selectedItem = (String) items[i];
proba = i;
}
});
builder.setPositiveButton("Ok", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int position) {
ListView lw = ((AlertDialog) dialog).getListView();
Object checkedItem = lw.getAdapter().getItem(lw.getCheckedItemPosition());
Toast.makeText(getApplicationContext(), ((String) checkedItem), Toast.LENGTH_SHORT).show();
if(proba == 0){
launchWebPage("http://www.metropolitan.ac.rs/osnovne-studije/fakultet-informacionih-tehnologija/");
} else if(proba == 1){
launchWebPage("http://www.metropolitan.ac.rs/osnovne-studije/fakultet-za-menadzment/");
} else {
launchWebPage("http://www.metropolitan.ac.rs/fakultet-digitalnih-umetnosti-2/");
}
}
});
builder.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
Toast.makeText(getBaseContext(), "Cancel pritisnuto!", Toast.LENGTH_SHORT).show();
}
});
builder.show();
return null;
}
有没有办法把多选框变成一次只能选一个选框?
所以这是我正在尝试解决的问题,使用对话框警报框和单选-多选。
public class MainActivity extends Activity {
CharSequence[] items = {"FIT", "Fakultet za menadzment", "Fakultet digitalnih umetnosti"};
private String selectedItem;
public int proba;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
private void launchWebPage(String url){
Intent i = new Intent(Intent.ACTION_VIEW);
i.setData(Uri.parse(url));
startActivity(i);
}
public void dialog(View v){
showDialog(0);
}
public void dialog1(View v){
Toast.makeText(getBaseContext(), "Nema deklarisanu funkciju.", Toast.LENGTH_LONG).show();
}
public void dialog2(View v){
Toast.makeText(getBaseContext(), "Nema deklarisanu funkciju.", Toast.LENGTH_LONG).show();
}
public Dialog onCreateDialog(final int id) {
final AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
builder.setTitle("Odabir");
builder.setSingleChoiceItems(items, 1, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
selectedItem = (String) items[i];
proba = i;
}
});
builder.setPositiveButton("Ok", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int position) {
Toast.makeText(getBaseContext(), "Test", Toast.LENGTH_SHORT).show();
}
});
builder.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
Toast.makeText(getBaseContext(), "Cancel pritisnuto!", Toast.LENGTH_SHORT).show();
}
});
builder.show();
return null;
}
}
您需要使用 radioButon
而不是 checkbox
。
https://developer.android.com/guide/topics/ui/controls/radiobutton.html
使用setSingleChoiceItems()
on AlertDialog.Builder
的变种之一。不管文档怎么说,这应该使用单选按钮,而不是复选框。
终于弄明白了,如果有人需要类似的东西,这是缺少的代码。
public Dialog onCreateDialog(final int id) {
final AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
builder.setTitle("Odabir");
builder.setSingleChoiceItems(items, -1, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
selectedItem = (String) items[i];
proba = i;
}
});
builder.setPositiveButton("Ok", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int position) {
ListView lw = ((AlertDialog) dialog).getListView();
Object checkedItem = lw.getAdapter().getItem(lw.getCheckedItemPosition());
Toast.makeText(getApplicationContext(), ((String) checkedItem), Toast.LENGTH_SHORT).show();
if(proba == 0){
launchWebPage("http://www.metropolitan.ac.rs/osnovne-studije/fakultet-informacionih-tehnologija/");
} else if(proba == 1){
launchWebPage("http://www.metropolitan.ac.rs/osnovne-studije/fakultet-za-menadzment/");
} else {
launchWebPage("http://www.metropolitan.ac.rs/fakultet-digitalnih-umetnosti-2/");
}
}
});
builder.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
Toast.makeText(getBaseContext(), "Cancel pritisnuto!", Toast.LENGTH_SHORT).show();
}
});
builder.show();
return null;
}