2016-12-26 1 views
0

한 번에 하나의 상자 만 선택할 수있는 상자로 여러 확인란을 전환하는 방법이 있습니까?setSingleChoiceItems 및 setPositiveButton Android

여기 경고 대화 상자와 단일 선택 도구 - 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()를 사용하여 작업하게 만들었지 만 문제는 클릭 할 때가 아니라 OK 버튼을 누른 후에 만 ​​의도해야한다는 것입니다. 그래서 거기 벽에 부딪쳤다. – Beansolder

+1

@Beansolder :'setSingleChoiceItems()'에 넘겨주는'DialogInterface.Listener'를 그냥 무시하십시오. AFAIK, 대화 상자는 여전히 유지되며 사용자가 대화 상자를 완전히 수락하거나 취소하면 반응 할 수 있습니다. – CommonsWare

+0

코드를 편집했습니다. 문제는 긍정적 인 버튼으로 ITEMS를 호출 할 수 없다는 것입니다. 여러 선택 사항을 넣은 다음 단 하나의 확인란 만 선택하면 OK를 누르면 선택한 사이트 중 하나가 의도됩니다. 내가 무슨 뜻인지 안다면? – Beansolder

0

누군가가 이와 비슷한 것을 필요로한다면 마지막으로 알아 냈습니다. 누락 된 코드입니다.