Video: Spørsmålene jeg har unngått å svare på... 2024
Hvorfor klikke to ganger når du kan gjøre det samme ved å klikke bare en gang? Din Android-app kan svare på innholdet i avmerkingsboksene når brukeren klikker på en knapp. I et strømlinjeformet scenario kan appen din svare så snart brukeren sjekker en boks. Denne koden viser hvordan du får dette til å skje.
pakke com. allyourcode. p01_06_04; importere android. app. Aktivitet; importere android. os. Bunt; importere android. utsikt. Meny; importere android. utsikt. MENUITEM; importere android. widget. avmerkingsbokser; importere android. widget. CompoundButton; importere android. widget. CompoundButton. OnCheckedChangeListener; importere android. widget. TextView; offentlig klasse MainActivity utvider Aktivitetsredskaper OnCheckedChangeListener {TextView textView; @Override protected void onCreate (Bundle savedInstanceState) {super. onCreate (savedInstanceState); setContentView (R. layout. activity_main); ((CheckBox) findViewById (R. Id.checkbox)). setOnCheckedChangeListener (this); ((CheckBox) findViewById (R. Id. CheckBox2)). setOnCheckedChangeListener (this); textView = (TextView) findViewById (R. id. textView);} @Override public void onCheckedChanged (CompoundButton-boksen, boolean isChecked) {StringBuilder str = new StringBuilder (textView. getText ()); CharSequence boxText = boks. GetText (); hvis (isChecked) {str. legg til ("" + boxText);} else {int start = str. indexOf (boxText. toString ()); int lengde = boxText. lengde(); str. erstatt (start, start + lengde, "");} textView. setText (str. toString (). trim ());} // … Etcetera
Som en knapp, lister hver avkrysning for onClick-hendelser. Du kan unngå å bruke onClick-eiendommen og illustrere bruken av en annen hendelselytter.
En avkrysningsboks lytter til endringer i tilstanden sin (dens "merket" versus "ukontrollert" tilstand). Så når brukeren berører en avkrysningsrute, brenner Android en onCheckedChanged-hendelse. Ved å registrere dette (hele MainActivity-forekomsten) som hver avkrysningsboks OnCheckedChangeListener, får du Android til å ringe onCheckedChanged-metoden.
OnCheckedChanged-metoden har to parametere - komponenten som ble rørt og komponentens tilstand som følge av berøring. Koden ovenfor var konstruert for å benytte disse to metodeparametrene.
En CompoundButton er en widget med markerte og ukontrollerte stater. CheckBox-klassen er en underklasse av CompoundButton. Andre underklasser av CompoundButton er RadioButton og ToggleButton. En ToggleButton er den søte lille tingen som lyser når den er merket.
I koden du ser over, refererer onCheckedChanged-metalls bokseparameter til hvilken boks brukeren berører.Denne boksen har en getText-metode, så du bruker getText-metoden for å hjelpe til med å fylle tekstView-elementet. Du kan bruke onCheckedChanged-metoden til isCheck-parameteren til å bestemme om du vil legge til tekst i textView-elementet eller slette tekst fra tekstView-elementet.