2016-12-26 9 views
0

Есть ли способ повернуть несколько флажков в поле, которое может иметь только один флажок в данный момент?setSingleChoiceItems и setPositiveButton Android

Итак, вот что я пытаюсь решить, с диалоговым оповещением и singlechoice-multichoice.

С Новым годом!

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; 
} 

} 

ответ

2

Используйте один из разновидностей setSingleChoiceItems() on AlertDialog.Builder. Несмотря на то, что говорит документация, в этом случае должны использоваться переключатели, а не флажки.

+0

Хмм Я сделал это работать с setSingleChoiceItems(), но проблема в том, что мне нужно что-то умысел только после нажатия кнопки ОК, не тогда, когда она нажата. Так что я попал в стену. – Beansolder

+1

@Beansolder: просто игнорируйте 'DialogInterface.Listener', который вы передаете в' setSingleChoiceItems() '. AFAIK, диалог все еще сохраняется, и вы можете реагировать, когда пользователь принимает или отменяет диалог полностью. – CommonsWare

+0

Я редактировал код там. Проблема в том, что я не могу называть ITEMS положительной кнопкой, и, возможно, я могу сделать несколько вариантов, а затем принудительно установить ее только на один флажок, поэтому, когда нажата OK, она намеревается создать один из выбранных сайтов. Если вы понимаете, что я имею в виду? – Beansolder

0

Наконец-то выяснилось, если кому-то нужно что-то похожее на это, это недостающий код.

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; 
} 

 Смежные вопросы

  • Нет связанных вопросов^_^