3. Egyszerű komponensek

Hasonló dokumentumok
4. A konténerek Konténerek LinearLayout

Alap számológép alkalmazás

Broadcast Service Widget

Kivételkezelés, beágyazott osztályok. Nyolcadik gyakorlat

UI megismerése, különböző felbontások támogatása, használati jogok kérése

Programozási technológia

strings.xml res/values/strings.xml fájlban hozzuk létre a hiányzó string adatforrásainkat A jelenlegi helyett ez álljon: <resources> <string

Swing GUI készítése NetBeans IDE segítségével

libgdx alapok, első alkalmazás

Objektum Orientált Programozás. 11. Kivételkezelés 44/1B IT MAN

Programozási nyelvek Java

Osztályok. 4. gyakorlat

SZÁMÍTÓGÉPES ADATBÁZIS-KEZELÉS. A MySQL adatbáziskezelő PHP folytatás JDBC, ODBC

Java és web programozás

Az osztályok csomagokba vannak rendezve, minden csomag tetszőleges. Könyvtárhierarhiát fed: Pl.: java/util/scanner.java

Overview. Service. Application Activity Activity 2 Activity 3. Fragment. Fragment. Fragment. Frag ment. Fragment. Broadcast Receiver

SZOFTVERFEJLESZTÉS ANDROID PLATFORMRA. Dr. Iszály György Barna

I. 288.: Utcai WiFi térkép

C++ programozási nyelv

JEE tutorial. Zsíros Levente, 2012

JUnit. JUnit használata. IDE támogatás. Parancssori használat. Teszt készítése. Teszt készítése

Felhasználói leírás a DimNAV Server segédprogramhoz ( )

Helyes-e az alábbi kódrészlet? int i = 1; i = i * 3 + 1; int j; j = i + 1; Nem. Igen. Hányféleképpen lehet Javaban megjegyzést írni?

Importálás. más típusú (pl:.imp,.xml,.xkr,.xcz) állomány beimportálása a nyomtatványkitöltő programba

Java Programozás 4. Gy: Java GUI. Tipper, MVC kalkulátor

Java programozási nyelv 4. rész Osztályok II.

Felhasználói felület megismerése, különböző felbontások támogatása

Szilipet programok telepítése Hálózatos (kliens/szerver) telepítés Windows 7 operációs rendszer alatt

Két csomag elemeiből lehet a felületet elkészíteni: awt: heavy weight komponensek; swing: light weight komponensek (időben később).

Mobil Informatikai Rendszerek

Java programozási nyelv 5. rész Osztályok III.

Java programozási nyelv 6. rész Java a gyakorlatban

és az instanceof operátor

ANDROID ALKALMAZÁSFEJLESZTÉS

Java VIII. Az interfacei. és az instanceof operátor. Az interfészről általában. Interfészek JAVA-ban. Krizsán Zoltán

OOP: Java 8.Gy: Abstract osztályok, interfészek

Java Programozás 5. Gy: Java alapok. Adatkezelő 1.rész

Számítástechnika II. BMEKOKAA Előadás. Dr. Bécsi Tamás

Rövid leírás a Make Your Mark szoftver használatához

Mobil Informatikai Rendszerek

Programozási technológia

Grafikus felhasználói felületek. Dr. Szendrei Rudolf Informatikai Kar Eötvös Loránd Tudományegyetem. Programozási technológia I. Dr.

ANDROID ALKALMAZÁSFEJLESZTÉS

Java Programozás 11. Ea: MVC modell

Szoftvertechnolo gia gyakorlat

Objektumorientált programozás C# nyelven

Sikeres végrehajtás(pass): ez azt jelenti, hogy a teszt rendben lefutott, és az ellenőrzési feltételek mind teljesültek.

Android Wear programozás. Nyitrai István

Java Programozás 6. Gy: Java alapok. Adatkezelő 2.rész

Technikai információk fejlesztőknek

UI megismerése - 2. rész Adattárolás

Programozási nyelvek Java

NAV nyomtatványok kitöltésének támogatása

Interfészek. PPT 2007/2008 tavasz.

Cikktípusok készítése a Xarayában

Vizuális, eseményvezérelt programozás XI.

Grafikus felhasználói felület (GUI) létrehozása A GUI jelentése Egy egyszerű GUI mintaalkalmazás létrehozása

Már megismert fogalmak áttekintése

Széchenyi István Egyetem. Programozás III. Varjasi Norbert

Webshop készítése ASP.NET 3.5 ben I.

Objektumorientált programozás C# nyelven

JAVA PROGRAMOZÁS 2.ELŐADÁS

ANDROID ALKALMAZÁSFEJLESZTÉS

Miután létrehoztuk, szeretnénk neki beszédesebb nevet adni. A név változtatásához a következőt kell tenni:

C#---Access adatbáziskezelési gyakorlat

Adabáziselérés ODBC-n keresztül utasításokkal C#-ban

Java Programozás 9. Gy: Java alapok. Adatkezelő 5.rész

GPRS Remote. GPRS alapú android applikáció távvezérléshez. Kezelési útmutató

Programozási nyelvek II.: JAVA

CREATE TABLE student ( id int NOT NULL GENERATED ALWAYS AS IDENTITY PRIMARY KEY, name varchar(100) NOT NULL, address varchar(100) NOT NULL )

Segédanyag: Java alkalmazások gyakorlat

Segédanyag: Java alkalmazások gyakorlat

QBE Édes Otthon lakásbiztosítás tarifáló webservice. Fejlesztői dokumentáció 1.0.2

JAVA PROGRAMOZÁS 3.ELŐADÁS

Access gyakorlati feladatok lépésről lépésre

SzePi Moodle tanári kézikönyv 1.0. A Dugonics András Piarista Gimnázium Moodle rendszerének elérése:

Segédlet kriptográfiai szolgáltatást beállító szoftverhez (CSPChanger)

Abstract osztályok és interface-ek. 7-dik gyakorlat

Java felhasználói felület

QGIS tanfolyam (ver.2.0)

Android Commander Felhasználói kézikönyv

Segédanyag: Java alkalmazások gyakorlat

Access adatbázis elérése OLE DB-n keresztül

Madarassy László, mérnök, BME - Mobil Innovációs Központ. lmadarassy@mik.bme.hu

Stateless Session Bean

Adatintegritás ellenőrzés Felhasználói dokumentáció verzió 2.0 Budapest, 2008.

Szerver oldali Java programozás /II. 1. óra. Elemkönyvtárak. Elemkönyvtárak használata Saját elemkönyvtár készítése.

Pelda öröklődésre: import java.io.*; import java.text.*; import java.util.*; import extra.*;

Útmutató parkolás indításához és leállításához

XCZ állományok ellenőrzése, átadása elektronikus beküldésre és közvetlen beküldése parancssori funkcióval az ÁNYK programban

ConnectAlarm alkalmazás Központ/modul programozási segédlet V1.2 TL280 (R) v.4.x modulokhoz

Mobil Telefonon Keresztüli Felügyelet Felhasználói Kézikönyv

Bevezetés a QGIS program használatába Összeálította dr. Siki Zoltán

ESEMÉNY VEZÉRELT ALKALMAZÁSOK FEJLESZTÉSE I. Bevezetés. Készítette: Gregorics Tibor

HVK Adminisztrátori használati útmutató

Nemzeti LEADER Kézikönyv LEADER HELYI FEJLESZTÉSI STRATÉGIA FELHASZNÁLÓI KÉZIKÖNYV szeptember

Enterprise JavaBeans. Ficsor Lajos Általános Informatikai Tanszék Miskolci Egyetem. Az Enterprise JavaBeans

8. gyakorlat Pointerek, dinamikus memóriakezelés

Optimalizálás Hatékony alkalmazás Androidra

Az importálás folyamata Felhasználói dokumentáció verzió 2.1.

Átírás:

0.0.0.. Egyszerű komponensek - Forum - Forum.0 Wiki Dashboard» Forum»». Egyszerű komponensek. Egyszerű komponensek Egy egy Activity felületére tehetünk egy egy View t, amelyre a későbbiekben komponensként hivatkozunk, hiszen az Android felületén a View olyan, mint Swing esetén a JComponent. Egy Activity felületére egy időben csak egy View t tehetünk, amely az esetek nagy részében ViewGroup, amelybe további View okat tehetünk, így alakíthatjuk ki az AWT/Swing esetén már megszokott komponensfát... A View általánosságban Mint említettem, a View nagyjából azt tudja, amit a JComponens Swing alatt: ez az osztály minden más komponens őse. Az leszármazott Activity példányunk szoros kapcsolatban van egy View osztály példányával, mégpedig a setcontentview metóduson át: HelloActivity.java 0 public class HelloActivity extends Activity { @Override public void oncreate(bundle savedinstancestate) { TextView textview = new TextView(this); textview.settext("hello, Forum.hu!"); this.setcontentview(textview); Ha nem adunk meg semmi különleges paramétert, akkor az átadott View pontosan kitölti az Activity által nyújtott területet. Saját komponenseket a View leszármaztatásával tudunk készíteni... Komponensek A felhasználó által látható View okat nevezzük komponenseknek, ezek közé tartoznak a feliratok, a gombok, a szövegbeviteli mezők és a többi hasonló komponens. Minden komponens a View osztályból származik, amelyről a későbbiekben bővebben is szót ejtek.... TextView A TextView komponens feladata egyszerű: a számára átadott szöveget írja ki címkék vagy többsoros szövegblokk formájában. Egy szöveget lehet neki átadni például StringBuilder használatával, ugyanis a legtöbb megszokott API hívás a rendelkezésünkre áll. A programban szereplő LinearLayout ról kicsit később szót ejtünk, egyelőre elég annyi, hogy alapesetben a komponenseket egymás mellé pakolja: wiki.javaforum.hu/pages/viewpage.action?pageid= /0

0.0.0.. Egyszerű komponensek - Forum - Forum.0 Wiki 0 LinearLayout layout = new LinearLayout(this); TextView textview = new TextView(this); StringBuilder sb = new StringBuilder(); sb.append("hello, I'm the "); sb.append(this.gettitle()); sb.append("!\n"); sb.append("árvíztűrő tükörfúrógép"); sb.append("\n"); sb.append("árvíztűrő TÜKÖRFÚRÓGÉP"); textview.settext(sb.tostring()); textview.settextcolor(color.blue); textview.setbackgroundcolor(color.green); layout.addview(textview); setcontentview(layout); A program kimenete a mobil képernyőjén:... Button A feliratok után a nyomógombok a legtöbbet használt, s egyben a legősibb felhasználói interfészek. Hozzunk létre wiki.javaforum.hu/pages/viewpage.action?pageid= /0

0.0.0.. Egyszerű komponensek - Forum - Forum.0 Wiki három nyomógombot, rendre Ok, Cancel és Next feliratokkal: 0 LinearLayout layout = new LinearLayout(this); Button okbutton = new Button(this); okbutton.settext("ok"); okbutton.setenabled(false); layout.addview(okbutton); Button cancelbutton = new Button(this); cancelbutton.settext("cancel"); layout.addview(cancelbutton); Button nextbutton = new Button(this); nextbutton.settext("next"); layout.addview(nextbutton); setcontentview(layout); Az Ok gomb le lesz tiltva, tehát nem tudjuk megnyomni. Nézzük ezt a mobil kijelzőjén:... ToggleButton wiki.javaforum.hu/pages/viewpage.action?pageid= /0

0.0.0.. Egyszerű komponensek - Forum - Forum.0 Wiki A kapcsolható gomb (kapcsológomb) úgy működik, hogy állapotát megőrzi a lenyomások során, vagyis felváltva lenyomva vagy felengedve marad. 0 LinearLayout layout = new LinearLayout(this); ToggleButton releasedbutton = new ToggleButton(this); layout.addview(releasedbutton); ToggleButton pressedbutton = new ToggleButton(this); pressedbutton.settexton("incoming"); pressedbutton.settextoff("incoming"); pressedbutton.setchecked(true); layout.addview(pressedbutton); setcontentview(layout); Ha ennek a gombtípusnak nem adunk át szöveget, akkor az ON vagy az OFF szöveget látja a felhasználó, természetesen a gomb állapotának megfelelően. A komponensnek át tudunk adni saját szöveget is a texton és a textoffmetódussal, ez hasznos, ha szűrőként szeretnénk használni a kapcsológombunkat:... CheckBox wiki.javaforum.hu/pages/viewpage.action?pageid= /0

0.0.0.. Egyszerű komponensek - Forum - Forum.0 Wiki A jelölőnégyzet hasonló célokat szolgál, mint a kapcsológomb, de más a megjelenése. Általában ha rövid szöveggel jellemezhető a kapcsolandó dolog, akkor kapcsológombot használunk; ha hosszabb szöveggel kell magyaráznunk, akkor pedig jelölőnégyzetet. Ebből adódik az a különbség is, hogy a jelölőnégyzetnek adnunk kell szöveget, amely a ki vagy bekapcsolható dolgot magyarázza meg; kapcsológomb esetén egy külön TextView kell a magyarázathoz. 0 LinearLayout layout = new LinearLayout(this); CheckBox uncheckedbox = new CheckBox(this); uncheckedbox.settext("check this!"); layout.addview(uncheckedbox); CheckBox checkedbox = new CheckBox(this); checkedbox.settext("uncheck this!"); checkedbox.setchecked(true); layout.addview(checkedbox); setcontentview(layout); Nézzük meg a mobil kijelzőjén:... RadioButton A rádiógombok a régi rádiókon lévő gombokról kapták a nevüket, ugyanis csak egy lehet egy időben lenyomva wiki.javaforum.hu/pages/viewpage.action?pageid= /0

0.0.0.. Egyszerű komponensek - Forum - Forum.0 Wiki közülük, amint egy újabbat nyomunk le, az előzőleg lenyomott gomb jelölése megszűnik. Akkor célszerű használni őket, ha a felhasználónak választania kell több dolog közül, de csak egy opciót választhat. Ebből következően a rádiógombok csak csoportban érzik jól magukat, a csoportot egy RadioGroup fogja össze: 0 0 LinearLayout layout = new LinearLayout(this); RadioGroup group = new RadioGroup(this); RadioButton firstbutton = new RadioButton(this); firstbutton.settext("first"); group.addview(firstbutton); RadioButton secondbutton = new RadioButton(this); secondbutton.settext("second"); group.addview(secondbutton); secondbutton.setchecked(true); RadioButton thirdbutton = new RadioButton(this); thirdbutton.settext("third"); group.addview(thirdbutton); layout.addview(group); setcontentview(layout); Mint látjuk, a csoporthoz kell hozzáadni a rádiógombokat, majd a csoportot rendeljük hozzá ahhoz a konténerhez, amibe szánjuk a gombokat. Általában célszerű a felhasználónak egy alapértelmezett lehetőséget adni, de ügyeljünk rá, hogy a csoporthoz való hozzáadás után állítsuk be az alapértelmezetten bejelölt gombot. Nézzük a kijelzőn: wiki.javaforum.hu/pages/viewpage.action?pageid= /0

0.0.0.. Egyszerű komponensek - Forum - Forum.0 Wiki... Chronometer Ha szükségünk lenne eltelt időt mérni, akkor a Chronometer egy példányára lesz szükségünk, az alábbi esetben az alkalmazás indítása óta eltelt időt tudjuk kiírni (feltéve, ha az alábbi kódrészletet az oncreate metódusba írjuk): 0 LinearLayout layout = new LinearLayout(this); Chronometer chronometer = new Chronometer(this); chronometer.start(); layout.addview(chronometer); setcontentview(layout); A kijelzőn egyszerűen egy perc:másodpercszámláló jelenik meg, és kezd számolni: wiki.javaforum.hu/pages/viewpage.action?pageid= /0

0.0.0.. Egyszerű komponensek - Forum - Forum.0 Wiki... AnalogClock és DigitalClock Ha ingerünk támadna analóg vagy digitális órát használni különösebb munka nélkül, akkor használhatjuk a kész komponenseket: 0 LinearLayout layout = new LinearLayout(this); AnalogClock analogclock = new AnalogClock(this); layout.addview(analogclock); DigitalClock digitalclock = new DigitalClock(this); layout.addview(digitalclock); setcontentview(layout); S mindez a kijelzőn: wiki.javaforum.hu/pages/viewpage.action?pageid= /0

0.0.0.. Egyszerű komponensek - Forum - Forum.0 Wiki... EditText Felhasználó által gépelt szöveg beviteléhez használhatjuk az EditText komponenst, amely képes többsoros bevitelt is kezelni. Ha nem adunk meg méretet, görgetősávot vagy különösebb elrendezést, akkor a benne lévő szöveg határozza meg a méretét. LinearLayout layout = new LinearLayout(this); EditText edittext = new EditText(this); edittext.settext("árvíztűrő tükörfúrógép"); layout.addview(edittext); setcontentview(layout); S mindez a képernyőn: wiki.javaforum.hu/pages/viewpage.action?pageid= /0

0.0.0.. Egyszerű komponensek - Forum - Forum.0 Wiki... ImageView Képek megjelenítéséhez az ImageView komponenst használhatjuk, egyszerűen át kell neki adni a megjelenítendő kép referenciáját... ám ilyet még nem csináltunk. A feladat nem nehéz, a res könyvtárban létre kell hoznunk egy drawable mappát és abba tehetjük a képeket, a platform pedig gondoskodik arról, hogy a következő fordításkor aktualizálja az R.java állományt, amelybe belekerül a kép is, a változó neve a kép nevét veszi fel kiterjesztés nélkül: R.java 0 package hu.javaforum.android; public final class R { public static final class attr { public static final class drawable { public static final int logo=0xf00000; public static final class layout { public static final int main=0xf00000; public static final class string { public static final int app_name=0xf00000; wiki.javaforum.hu/pages/viewpage.action?pageid= 0/0

0.0.0.. Egyszerű komponensek - Forum - Forum.0 Wiki Nem kell mást tennünk, mint meghatározni a kép címét: LinearLayout layout = new LinearLayout(this); ImageView imageview = new ImageView(this); imageview.setimageresource(r.drawable.logo); layout.addview(imageview); setcontentview(layout); A kijelzőn pont akkora méretben jelenik meg, amekkora a kép tényleges felbontása:..0. ImageButton Az ImageView és a nyomógomb keveréke, amely lehetővé teszi, hogy olyan nyomógombot tegyünk ki a kijelzőre, amelyben szöveg helyett egy kép van: wiki.javaforum.hu/pages/viewpage.action?pageid= /0

0.0.0.. Egyszerű komponensek - Forum - Forum.0 Wiki LinearLayout layout = new LinearLayout(this); ImageButton imagebutton = new ImageButton(this); imagebutton.setimageresource(r.drawable.logo); layout.addview(imagebutton); setcontentview(layout); A kijelzőn a keret mutatja mindössze, hogy gombról van szó:... Egyéb komponensek A részletezett komponenseken kívül találhatunk még ProgressBar t, SeekBar t, autocomplete beviteli mezőt, és egyéb apróságot, érdemes konzultálni a részletes referencia leírással ez ügyben, mivel a komponensek száma minden egyes kiadott verzióval növekszik..... Mindez XML alapokon A res mappában a layout alatt található XML fájlokkal eddig nem foglalkoztunk, most vessünk az ott figyelő wiki.javaforum.hu/pages/viewpage.action?pageid= /0

0.0.0.. Egyszerű komponensek - Forum - Forum.0 Wiki main.xml állományra egy hosszabb pillantást: main.xml 0 <?xml version=".0" encoding="utf "?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent"> <TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="hello Android from NetBeans"/> </LinearLayout> Ezt a tartalmat a NetBeans plugin generálta a projekt létrehozásakor, és a projekt fordításakor ebből egy Activity által használható elrendezést fog generálni, amely belekerül az R.java fájlba is: R.java public static final class layout { public static final int main=0xf00000; S erre az erőforrásra a programunkban tudunk hivatkozni, mint View: HelloActivity.java 0 package hu.javaforum.android; import android.app.activity; import android.os.bundle; public class HelloActivity extends Activity { @Override public void oncreate(bundle savedinstancestate) { setcontentview(r.layout.main); A programot futtatva igen erős összefüggést kell látnunk a main.xml és a képernyő között: wiki.javaforum.hu/pages/viewpage.action?pageid= /0

0.0.0.. Egyszerű komponensek - Forum - Forum.0 Wiki A res mappa alatti elemekre is tudunk hivatkozni az XML állományból, ehhez a szöveg értékét @ jellel kell kezdenünk és az R.java állomány neveit kell használnunk. Módosítsuk a strings.xml állományt az alábbiak szerint: strings.xml <?xml version=".0" encoding="utf "?> <resources> <string name="app_name">helloforum</string> <string name="hello">hello, I\'m the HelloForum!</string> </resources> Majd fordítsuk le a projektet, hogy a környezet legenerálja az újabb R.javaforrást: wiki.javaforum.hu/pages/viewpage.action?pageid= /0

0.0.0.. Egyszerű komponensek - Forum - Forum.0 Wiki R.java 0 package hu.javaforum.android; public final class R { public static final class attr { public static final class drawable { public static final int logo=0xf00000; public static final class layout { public static final int main=0xf00000; public static final class string { public static final int app_name=0xf00000; public static final int hello=0xf0000; Ebben már szerepel a korábban hozzáadott logo nevű kép hivatkozása, illetve a most hozzáadott hello nevű szöveg. Módosítsuk a main.xml állományt: main.xml 0 <?xml version=".0" encoding="utf "?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent"> <TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="@string/hello"/> </LinearLayout> A kulcsszó itt a @string/hello szöveg, amely az R.javaállomány megfelelő sorára mutat, s egyéb erőforrásokat is ilyen egyszerűséggel tudunk meghivatkozni. Futtassuk újra a programot, s nézzük meg az eredményt: wiki.javaforum.hu/pages/viewpage.action?pageid= /0

0.0.0.. Egyszerű komponensek - Forum - Forum.0 Wiki Felmerülhet a kérdés, hogy az XML fájlban leírt komponenseket miképp tudjuk elérni a programból, hiszen az R.java forrásában nem szerepelnek. Ennek oka, hogy csak azok az erőforrások kerülnek bele az R.java leíróba, amelyeknek adunk azonosítót, vagyis kitöltjük az android:id attribútum értékét: main.xml 0 <?xml version=".0" encoding="utf "?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" android:id="@+main/layout"> <TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="@string/hello" android:id="@+main/textview"/> </LinearLayout> Az id mezőre annyi megkötés van, hogy a @+ után kell következzen két név '/' jellel elválasztva. A '/' jel két oldalán lévő szövegből megszokott változók lesznek, amelyet meg is tekinthetünk az újra legenerált R.java állományban: wiki.javaforum.hu/pages/viewpage.action?pageid= /0

0.0.0.. Egyszerű komponensek - Forum - Forum.0 Wiki R.java 0 0 package hu.javaforum.android; public final class R { public static final class attr { public static final class drawable { public static final int logo=0xf00000; public static final class layout { public static final int main=0xf00000; public static final class main { public static final int layout=0xf00000; public static final int textview=0xf0000; public static final class string { public static final int app_name=0xf00000; public static final int hello=0xf0000; A változás egy main nevű osztály, amelynek lett kettő új mezője. Fontos tudnivaló, hogy az azonosítónak egyedinek kell lennie az alkalmazáson belül, mivel az R.main.textView néven férhetünk hozzá a TextView példányhoz, függetlenül attól, hogy melyik XML állományban szerepel az adott komponens. Az Activity példányban a findviewbyid metódussal tudjuk lekérdezni az adott erőforrás azonosító alapján a komponenst: TextView view = (TextView)findViewById(R.main.textView); view.settext("this is it!"); setcontentview(r.layout.main); A lekérdezésnél ügyelnünk kell arra, hogy a típuskonverzió helyesen történjen meg, ezek után már úgy tudjuk használni az adott erőforrást, mintha mi hoztuk volna létre. Nézzük meg, mit is látunk: wiki.javaforum.hu/pages/viewpage.action?pageid= /0

0.0.0.. Egyszerű komponensek - Forum - Forum.0 Wiki Ez bizony nem szép látvány, a platform leállította a program futását. Ennek oka többnyire egy általunk le nem kezelt kivétel, amely így eljut az Android platformig, amely információ hiányában egy ilyen általános hibaüzenettel szórakoztatja a felhasználót. Nos, itt az ideje, hogy elkapjuk a felmerült kivételeket és valamilyen módon kiírjuk őket: 0 try { TextView view = (TextView) findviewbyid(r.main.textview); view.settext("this is it!"); setcontentview(r.layout.main); catch (Exception except) { TextView textview = new TextView(this); final Writer result = new StringWriter(); final PrintWriter printwriter = new PrintWriter(result); except.printstacktrace(printwriter); textview.settext(result.tostring()); setcontentview(textview); Egy megszokott try catch blokk lehet a megoldás, amely hiba esetén létrehoz egy TextView komponenst, amelybe beleírja a kivételben hordozott stacktrace listát: wiki.javaforum.hu/pages/viewpage.action?pageid= /0

0.0.0.. Egyszerű komponensek - Forum - Forum.0 Wiki No igen, ez egy csúnya NullPointerException, amelyet az okozott, hogy előbb kérdeztük le az erőforrások között létrehozott komponenst, mielőtt az létrejött volna, ugyanis ezek a példányok a setcontentview metódus hívásakor jönnek létre, javítsuk ki a programot, vagyis vegyük előre a setcontentview hívást: 0 try { setcontentview(r.layout.main); TextView view = (TextView) findviewbyid(r.main.textview); view.settext("this is it!"); catch (Exception except) { TextView textview = new TextView(this); final Writer result = new StringWriter(); final PrintWriter printwriter = new PrintWriter(result); except.printstacktrace(printwriter); textview.settext(result.tostring()); setcontentview(textview); Nézzük most az eredményt: wiki.javaforum.hu/pages/viewpage.action?pageid= /0

0.0.0.. Egyszerű komponensek - Forum - Forum.0 Wiki Mint láthattuk, az XML leíró előnye, hogy tömörebb lesz tőle a kód, és a fába szervezett komponensek sokkal jobban leírhatók XML ben, hátránya pedig a fent látható aljas hibához hasonló problémák esélye, hiszen egy fejlesztő környezet messziről kiszúr egy NullPointerException gyanús helyzetet, ugyanez a findviewbyid esetén nem működik. Your Rating: Results: rates 0 Tetszik Küldés wiki.javaforum.hu/pages/viewpage.action?pageid= 0/0