άσκηση Hide UI Elements 7.2 Try and Catch

Σχετικά έγγραφα
Για να κάνουμε μια εικόνα να εξαφανίζεται και μια να εμφανίζεται (cross fade), κάνουμε τον συνδυασμό των από πάνω

ιαδικτυακές Εφαρµογές

Αντικειµενοστρεφής Προγραµµατισµός

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Κλάσεις και Αντικείμενα Αναφορές

ΚΕΡΑΜΟΠΟΥΛΟΣ ΕΥΚΛΕΙΔΗΣ

7 f i n a l S t r i n g mytelephone=" " ; 8 10 {

8 Maps. 8.1 Δημουργία Activity με χάρτη

2.1. Εντολές Σχόλια Τύποι Δεδομένων

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Αναφορές Στοίβα και Σωρός Μνήμης Αντικείμενα ως ορίσματα

6. Εξαιρέσεις στη γλώσσα Java

Εισαγωγή σε αντικειμενοστραφή concepts. Και λίγη C#

ιαδικτυακές Εφαρµογές Πραγµατικού Χρόνου µε Java

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Μαθήματα από τα εργαστήρια

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Εξαιρέσεις

CS 150 Assignment 2. Assignment 2 Overview Opening Files Arrays ( and a little bit of pointers ) Strings and Comparison Q/A

Αντικειμενοστρεφής Προγραμματισμός

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Πίνακες Κλάσεις και Αντικείμενα

(C) 2010 Pearson Education, Inc. All rights reserved.

Δομές Δεδομένων - Εργαστήριο 2. Λίστες

Βασίλης Χριστοφίδης Επαναληπτική Εξέταση (3 ώρες) Ηµεροµηνία: 21 Σεπτεµβρίου 2012

Πρόγραµµα 9.1 Πέρασµα δεδοµένων στην µνήµη

Διδάσκων: Παναγιώτης Ανδρέου

ΕΞΑΙΡΕΣΕΙΣ. Εξαιρέσεις προκαλούνται. από το σύστηµα. από το πρόγραµµα

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Αντικείμενα ως ορίσματα Εισαγωγή στις αναφορές

Ειδικά Θέματα Προγραμματισμού

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Υπερφόρτωση Αντικείμενα σαν ορίσματα

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Αντικείμενα ως ορίσματα

Ειδικά Θέματα Προγραμματισμού

Κλήση Συναρτήσεων ΚΛΗΣΗ ΣΥΝΑΡΤΗΣΕΩΝ. Γεώργιος Παπαϊωάννου ( )

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Δημιουργώντας δικές μας Κλάσεις και Αντικείμενα

Εργαστήριο 02: Προγραμματισμός με Γενικούς Τύπους (JAVA Generics) ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι

Κληρονομικότητα. Παύλος Εφραιμίδης pefraimi <at> ee.duth.gr. Java Κληρονομικότητα 1

Τ.Ε.Ι. Μεσολογγίου, Τµήµα τηλεπικοινωνιακών Συστημάτων & Δικτύων

Εισαγωγή στη γλώσσα προγραμματισμού Java 69

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ - ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΕΠΛ 133: ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΕΦΗΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΕΡΓΑΣΤΗΡΙΟ 3 Javadoc Tutorial

Σχεδίαση Εφαρμογών και Υπηρεσιών Διαδικτύου 7 η Διάλεξη: Σύντομη εισαγωγή στην Java

Ορισµός Νήµα (thread) είναι µια ακολουθιακή ροή ελέγχου (δηλ. κάτι που έχει αρχή, ακολουθία εντολών και τέλος) σ ένα

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Κλάσεις και Αντικείμενα Μέθοδοι

Dynamic types, Lambda calculus machines Section and Practice Problems Apr 21 22, 2016

ΠΛΗΡΟΦΟΡΙΚΗ Ι JAVA Τμήμα θεωρίας με Α.Μ. σε 3, 7, 8 & 9 22/11/07

Αντικειμενοστρεφής Προγραμματισμός

ΕΙΣΟ ΟΣ-ΕΞΟ ΟΣ Ε ΟΜΕΝΩΝ

3 Αλληλεπίδραση Αντικειμένων

Αντικειµενοστραφής Προγραµµατισµός

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Κλάσεις και Αντικείμενα Μέθοδοι

Οντοκεντρικός Προγραμματισμός

ΕΙΣΟ ΟΣ-ΕΞΟ ΟΣ Ε ΟΜΕΝΩΝ

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Εισαγωγή στη Java

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Αναφορές Στοίβα και Σωρός Αναφορές-Παράμετροι


ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Δημιουργία Κλάσεων και Αντικειμένων

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Αντικείμενα με πίνακες. Constructors. Υλοποίηση Στοίβας

POINTERS, AGGREGATION, COMPOSITION

Παύλος Εφραιµίδης. Java. Κληρονοµικότητα

Συμβολοσειρές ΣΥΜΒΟΛΟΣΕΙΡΕΣ. Γεώργιος Παπαϊωάννου ( )

Εισαγωγή στον Προγραμματισμό

Αντικειμενοστρεφής Προγραμματισμός Διάλεξη 9 : ΕΞΑΙΡΕΣΕΙΣ ΚΑΙ Ο ΧΕΙΡΙΣΜΟΣ ΤΟΥΣ

Κλάσεις στη Java. Παύλος Εφραιμίδης. Java Κλάσεις στη Java 1

Κεφάλαιο 1. Νήματα (Threads). Time Sharing

Κλάσεις στη Java. Στοίβα - Stack. Δήλωση της κλάσης. ΗκλάσηVector της Java. Ηκλάση Stack

ΠΛΗΡΟΦΟΡΙΚΗ ΙI Ενότητα 12: Ροές και είσοδος/έξοδος αρχείων

Αρχεία και Ρεύματα. Αρχεία

Δομές Δεδομένων & Αλγόριθμοι

ΠΛΗΡΟΦΟΡΙΚΗ ΙΙ (JAVA) 11/3/2008

Δομές Δεδομένων. Δημήτρης Μιχαήλ. Υλοποίηση Δυαδικού Σωρού σε γλώσσα Java. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο

APP INVENTOR ΟΔΗΓΟΣ 8 Οκτωβρίου 2018

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Κλάσεις και Αντικείμενα Constructors

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Κλάσεις και Αντικείμενα Μέθοδοι

Προγραμματισμός Ι. Πίνακες, Δείκτες, Αναφορές και Δυναμική Μνήμη. Δημήτρης Μιχαήλ. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο

Οντοκεντρικός Προγραμματισμός

Το πρόγραμμα HelloWorld.java. HelloWorld. Κλάσεις και Αντικείμενα (2) Ορισμός μιας Κλάσης (1) Παύλος Εφραιμίδης pefraimi <at> ee.duth.

Εκφωνήσεις ασκήσεων εργαστηρίου 2 (java threads)

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Αναφορές Αντικείμενα ως ορίσματα

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Κλάσεις και Αντικείμενα Constructors, equals, tostring

Αντικειμενοστρεφής Προγραμματισμός

Αντικειμενοστρεφής Προγραμματισμός

Προγραμματισμός Ι. Δείκτες. Δημήτρης Μιχαήλ. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο

Προγραμματισμός ΙΙ (Java) 4. Διαχείριση εξαιρέσεων

ΘΕΜΑΤΑ ΕΞΕΤΑΣΕΩΝ ΟΜΑΔΑ Α

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Πίνακες Κλάσεις και Αντικείμενα

9:00-10:00 π.μ. (60 λεπτά) Παρασκευή, 14 Οκτωβρίου, 2016

ΠΛΗΡΟΦΟΡΙΚΗ Ι JAVA Τμήμα θεωρίας με Α.Μ. σε 3, 7, 8 & 9 6/12/07

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Κλάσεις και Αντικείμενα Μέθοδοι

Εισαγωγή στην C. Μορφή Προγράµµατος σε γλώσσα C

Τμήμα Πολιτικών Μηχανικών και Μηχανικών Περιβάλλοντος ΠΠΜ 401: Ανάπτυξη Λογισμικού Εφαρμογών Μηχανικής, :00-10:00 π.μ.

Διδάσκων: Παναγιώτης Ανδρέου

ηµιουργία ιαλογικών Προγραµµάτων για το Web

Φροντιςτήριο. Linked-List

ΠΛΗΡΟΦΟΡΙΚΗ ΙI Ενότητα 10: Exceptions handling (Χειρισμός εξαιρέσεων)

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Αντικείμενα μέσα σε αντικείμενα Αντικείμενα ως επιστρεφόμενες τιμές Αντικείμενα με πίνακες

ΤΕΜ-101 Εισαγωγή στους Η/Υ Εξεταστική Ιανουαρίου 2011 Θέματα Β

Εισαγωγή στη JAVA. Εισαγωγή στη Java. Η Java είναι δημιούργημα της SUN MICROSYSTEMS.

Με την ολοκλήρωση της διαδικασίας μπορούμε αν θέλουμε να επιλέξουμε να ανοίξει ή όχι η εφαρμογή που έχει εγκατασταθεί.

ΚΑΤΑΣΚΕΥΑΣΤΕΣ ΑΝΤΙΓΡΑΦΗΣ

Ξεκινώντας με το MIT Αρρ Inventor. 1 η Εργασία

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Δημιουργία Κλάσεων και Αντικειμένων Constructors

ΠΛΗΡΟΦΟΡΙΚΗ Ι JAVA Τμήμα θεωρίας με Α.Μ. σε 3, 7, 8 & 9 13/12/07

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Constructors Υπερφόρτωση Αντικείμενα ως παράμετροι

ΕΠΛ 012. JavaScripts

3ο σετ σημειώσεων - Πίνακες, συμβολοσειρές, συναρτήσεις

Transcript:

7.1 Hide UI Elements Στο Android Studio όταν θέλουμε να κρύψουμε οτιδήποτε (κάποιο Button, ένα TextView, ένα ImageView κλπ) μπορούμε να χρησιμοποιήσουμε την παρακάτω εντολή: setvisibility(view.invisible) και αντίστοιχα για να το εμφανίσουμε setvisibility(view.visible) Για παράδειγμα για να κρύψουμε ένα TextView με όνομα tv γράφουμε TextView tv = (TextView) findviewbyid(r.id.textview); tv.setvisibility(view.invisible); άσκηση 1 Βάλτε δύο κουμπιά Show και Hide και ένα TextView. Όταν πατάτε το Hide να κρύβεται το TextView κι όταν πατάτε το Show να εμφανίζεται. 7.2 Try and Catch Πολλές φορές θέλουμε να εκτελέσουμε κάποιες εντολές χωρίς όμως να είμαστε 100% σίγουροι ότι θα λειτουργήσουν σωστά ή χωρίς να προκαλέσουν σφάλμα στο πρόγραμμά μας. Για παράδειγμα, αν έχουμε μια εφαρμογή που προσπαθεί να κατεβάσει κάποια δεδομένα από μια ιστοσελίδα και την ώρα που επιχειρήσει να τα κατεβάσει, δεν υπάρχει σύνδεση στο διαδίκτυο ή ακόμη και η ιστοσελίδα έχει «πέσει». Για να αποφύγουμε το να κρασάρει η εφαρμογή μας, μπορούμε να χρησιμοποιήσουμε τις εντολές try και catch. Δείτε τον παρακάτω κώδικα και προσπαθήστε να κατανοήσετε τι κάνει. Μπορείτε να το τρέξετε χωρίς τα try and catch για να δείτε τι θα συνέβαινε αν έτρεχε χωρίς αυτά; Μανώλης Τσικνάκης, Αλέξανδρος Ρονιώτης, Ευαγγελία Μανιαδή Ηράκλειο 2016

int[] numbers = new int[3]; try{ for(int i=0; i<=3; i++) { numbers[i]=i; catch(arrayindexoutofboundsexception e){ System.out.println("Index out of bounds!"); //catch specific Exception catch(exception e){ System.out.println(e); //Leave as backup if another exception happens Σελίδα 2

7.3 Downloading Web Content Αν ασχοληθείτε με εφαρμογές για κινητά, πολλές φορές θα χρειάζεται να κατεβάζετε υλικό από το δίκτυο (π.χ. από κάποια ιστοσελίδα) για να το χρησιμοποιήσετε στην εφαρμογή σας. Γι αυτό θα πρέπει να γνωρίζετε μερικά πράγματα για τα threads του Downloading. Εδώ θα δούμε πώς μπορούμε να διαβάσουμε τον κώδικα (HTML) που βρίσκεται σε μια σελίδα, π.χ. το http://www.pagni.gr. Αυτό είναι πολύ συνηθισμένο όταν εργάζεστε με APIs διαφόρων υπηρεσιών. Δημιουργία class με extends AsyncTask Το πρώτο πράγμα που θα κάνουμε είναι να δημιουργήσουμε μια νέα κλάση DownloadTask, η οποία είναι μια ειδική κλάση καθώς κάνει extend την ήδη υπάρχουσα AsyncTask. Αυτό που προσπαθούμε να κάνουμε είναι να δημιουργήσουμε ένα νέο Thread που θα κάνει download το content από την ιστοσελίδα, παράλληλα με το MainThread (ή UIThread) που τρέχει η OnCreate. Αυτό είναι πολύ σημαντικό να το γνωρίζουμε, γιατί έτσι η εφαρμογή μας δεν χρειάζεται να περιμένει να κατεβεί όλο το περιεχόμενο για να εκτελεστεί. return null; Η AsyncTask παίρνει τρία ορίσματα. Το πρώτο (συνήθως String) είναι ο τύπος των δεδομένων που θέλουμε να περάσουμε σε αυτή την κλάση. Στην περίπτωσή μας αυτό θα είναι το URL της ιστοσελίδας μας http://www.pagni.gr. Το δεύτερο όρισμα είναι το όνομα της μεθόδου που θα χρησιμοποιήσουμε για να δείξουμε την πρόοδο του Task μας. Αν απαιτείται μεγάλος χρόνος για το Task μας καλό είναι να χρησιμοποιείται. Εδώ δεν θα το χρησιμοποιήσουμε και βάζουμε Void. Το τρίτο όρισμα (εδώ String) είναι ο τύπος των δεδομένων που θα μας γυρίσει το task που τρέχουμε. Στην περίπτωση μας θα είναι όλος ο HTML κώδικας της σελίδας μας. Μέσα στην κλάση κάνουμε override τη μέθοδο doinbackground που είναι protected (δηλαδή χρησιμοποιείται από οπουδήποτε μέσα στο package της εφαρμογής). Το String params είναι τύπου VarArg, δηλαδή ουσιαστικά ένας πίνακας με μεταβλητό μέγεθος. Π.χ. το params[0] είναι τα δεδομένα στην πρώτη θέση του πίνακα. Αντίστοιχα για να το ορίσουμε μπορούμε να βάλουμε params= Alex, Mike, δηλαδή χωρίς τα [] των πινάκων. Σελίδα 3

Για να τα «ενώσω» γράφω στην oncreate τις παρακάτω εντολές task.execute("http://www.pagni.gr/"); Ουσιαστικά αυτή η εντολή περνάει στο όρισμα params[0] το URL μας. Όμως είπαμε ότι το task μας επιστρέφει String, άρα αλλάζουμε το πρόγραμμά μας ως εξής: Log.i("URL", params[0]); return "Done"; Όμως βλέπω ότι μου βγάζει σφάλμα στην τελευταία εντολή και κάνω την αλλαγή που προτείνει (surroung with try and Catch). Το σφάλμα που μπορεί να προκύψει είναι ότι μπορεί να μην μπορεί να κάνει download την σελίδα (π.χ. δεν υπάρχει σύνδεση στο δίκτυο): try { Log.i("Result", result); catch (InterruptedException e) { catch (ExecutionException e) { Αν το τρέξετε θα τυπώσει το URL και το Done στα Logs. Προς το παρόν έχουμε κάνει τη δημιουργία του thread μας που τρέχει παράλληλα με το MainTask (στο background). Σύνδεση με την ιστοσελίδα και διάβασμα περιεχομένου Το πρώτο πράγμα που θα κάνουμε είναι να πάρουμε τα permission για την σύνδεση στο διαδίκτυο. Αυτό θα γίνει στο manifest.xml με την παρακάτω γραμμή. <uses-permission android:name="android.permission.internet" /> Σελίδα 4

Στην συνέχεια, στη java, γράφουμε τον παρακάτω κώδικα για να διαβάσουμε τα δεδομένα και να τα τυπώσουμε στα logs. public class MainActivity extends AppCompatActivity { String result = ""; URL url; //The URL is actually a string of the right format HttpURLConnection urlconnection = null; //this is actually a connection, like a browser try{ //there might be an error during connect url = new URL(params[0]); //this could give exception if malformated url (without http, etc) urlconnection = (HttpURLConnection) url.openconnection(); //think it as opening the browser InputStream in = urlconnection.getinputstream(); //Open a stream to hold the input of data InputStreamReader reader = new InputStreamReader(in); //we then start reading data int data = reader.read(); //read one char while(data!= -1) //-1 when it finishes reading { char current = (char) data; result += current; data = reader.read(); return result; catch (Exception e){ return "Failed"; try { Log.i("Content", result); catch (InterruptedException e) { catch (ExecutionException e) { Σελίδα 5