Προς το περιεχόμενο

Ερωτήσεις προγραμματισμού σε Android μεσω eclipse


xarda

Προτεινόμενες αναρτήσεις

Ας τα πάρω με τη σειρά

1.Για να δημιουργήσω ενα νέο Android Application Project επιλέγω: File -> New -> Android Application Project. Μετα επιλέγω Application Name , Project Name , Package Name -> next και blah blah blah -> Finish

 

Βλεπω σωστα πως στον Package Explorer εχει δημιουργηθεί ο φάκελος με το project μου.

Τα δύο σημαντικά αρχεία μου είναι το

 

src/packetName/MainActivity.java

 

και 

 

res/layout/activity_main.xml

 

απ'οτι καταλαβα και τα δυο αρχεία δημιουργούνται αυτομάτως και περιέχουν τους κώδικες

MainActivity.java

package acom.example.a;

import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;

public class MainActivity extends Activity {

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
	}

	@Override
	public boolean onCreateOptionsMenu(Menu menu) {
		// Inflate the menu; this adds items to the action bar if it  is present.
		getMenuInflater().inflate(R.menu.activity_main, menu);
		return true;
	}

}

 

 

activity_main.xml 

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity" >

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerHorizontal="true"
        android:layout_centerVertical="true"
        android:text="@string/hello_world" />

</RelativeLayout>

 

 

1. η ερωτηση μου είναι με ποιο τρόπο συνδέονται τα δύο αυτά αρχεία μεταξύ τους και "επικοινωνούν" .

 

και επίσης...

 

2. σε περίπτωση που προσθέσω ενα απλό button βλέπω πως αυτομάτως προστίθετε και ο αντίστοιχος xml κώδικας στο αρχείο activity_main.xml.Πώς θα μπορέσω να γράψω τον κατάλληλο κώδικα στο .java αρχείο μου έτσι ώστε πατώντας αυτο το button να αλλάζει το χρώμα του για παράδειγμα;;;

3. Θα πρέπει να το δημιουργήσω δυναμικά στο .java αρχείο μου με χρήση της new ;

 

4.Είδα πως έχει events όπως το onClick().Στον embarcadero για c++ κάνοντας double click σε ενα button δημιουργούσε αυτομάτως και την αντίστοιχη μέθοδο οπου μεσα εκει έγραφες για το τί θέλεις να κάνει το button.Εδω θα πρέπει εξ'αρχής να γράψω κάθε μέθοδο ξεχωριστά ή υπάρχει κάποιος αυτοματισμός;;

 

( αρχαριος ειμαι τι να κάνω! )




 

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Από όσο ξέρω και αν κάνω λάθος παρακαλώ να με διορθώσετε αλλά στον XML κώδικά απλός σχεδιάζεις τη θα βλέπεις στην εφαρμογή πχ κουμπία , σπίνερς κτλ. Στον κώδικα της java υλοποιήσου τη θα κάνει κάθε κουμπί κάνει ένα implements OnClickListener και προσθέτεις της εντολές για κάθε κουμπί onClick() αν δεν κάνω λάθος τώρα ο κώδικας java συνδέετε με την XML με το setContentView(R.layout.activity_main). Αυτά που σου λέω με κάθε επιφύλαξή γιατί και εγώ δεν πολύ ασχολούμαι με android προγράμματα αλλά με java.

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Δημοσ. (επεξεργασμένο)

ετσι είναι. βασικά πρέπει να ξέρεις java για να γράψεις android. το eclιpse με τα Android Tools ειναι πολύ καλο εργαλείο αλλα όταν θές να κάνεις κάτι πρέπει να το γράφεις με κώδικα. στο XML το μόνο που μπορείς να δηλώσεις ειναι μια μέθοδο που θα τρέχει στο onClick. ακόμα και αυτό, νομίζω καλύτερο θα είναι να δηλωθεί με κώδικα.... και εγώ τώρα έχω ξεκινήσει να ασχολούμαι αλλα τα πράγματα ειναι τόσο απλά.

 

επίσης το Layout που χρησιμοποιείς στο παράδειγμα πάνω δεν θα σου δουλεύει σε όλες τις συσκευές θα πρέπει να φτιάξεις πολλά τέτοια Layout... οπότε αντι για relative διαλέγεις κάποιο άλλο. γενικά για να φτιάξεις GUI με drag and drop θα σου σπάσει τα νεύρα το καλύτερο ειναι να μάθεις να το γράφεις με κώδικα... αλλα εγώ να σου πώ την αλήθεια απο πείσμα και μόνο το παλεύω με το WYSIWYG ...

 

edit: το χω σκίσει στα edit αλλα τώρα που χω χρόνο θα απαντήσω :P

1)  setContentView(R.layout.activity_main); με αυτο συνδέεται το activity με το XML. διαλέγει απο τα resources to activity_main.xml

2) θα δημιουργήσεις μια μέθοδο "mymethodos" και θα προσθέσεις στο xml του κουμπιού

android:onClick="mymethodos" έτσι θα συνδεθεί με την μέθοδο της κλάσης.

3) οχι απαραίτητα, αλλα μπορείς να το κάνεις και αυτό. συνήθως αυτο θα το κάνεις για κάτι που δεν ξέρεις οτι θα υπάρχει πριν εκτελεστεί, όχι για κουμπιά τύπου OK,CANCEL,SEND,κτλ νομίζω μπορείς να προσθέσεις και xml δυναμικά αλλα να σου πώ την αλήθεια μόνο μια μέρα έχω ασχοληθεί με το android και μπορεί κάποια απο αυτα που σου λέω να ειναι λάθος.

4) μήπως εννοείς τα onCreate κτλπ? αυτά είναι για το Intent που δημιουργεί το activity. σου φτιάχνει γενικά πολλά μόνο του το eclipse, απλα οταν θές να προσθέσεις καινούριο αρχείο πρέπει να πατήσεις π.χ το κουμπί new->Android Activity, και σου προσθέτει μόνο του διάφορα καλούδια. μην φτιάξεις δηλαδή μονος σου καινούριο file άδειο και τα προσθέσεις μόνος σου, δεν υπάρχει λόγος. επίσης σου προσθέτει και exception handlers για ότι χρησιμοποιήσεις απο library ... πραγματικά χαίρομαι που είχα παρατήσει τον προγραματισμό τόσα χρόνια γιατι μάλλον τώρα μπορώ να έχω πράγματα που οι παλιοί δεν είχαν :P

 

γνώμη μου διάβασε αυτό http://developer.android.com/training/index.html

μετά διάβασε τα API GUIDES που έχει δίπλα, και θα χεις καταλάβει σχεδον τα πάντα απο βασικά..

απλά αν δεν καταλαβαίνεις κάποια πράγματα θα πρέπει να δείς τι ειναι class,interface,κληρονομικότητα κτλπ απο JAVA γιατι ουσιαστικά σε JAVA γράφεις.

 

εδώ: http://www.insomnia.gr/topic/471095-%CF%80%CF%81%CE%BF%CE%B3%CF%81%CE%B1%CE%BC%CE%BC%CE%B1%CF%84%CE%B9%CF%83%CE%BC%CF%8C%CF%82-%CF%83%CE%B5-android/

έχουν γράψει τα παιδιά για κάποια tutorial που ρώτησες σε άλλο τοπικ.

 

το κάνεις για να μάθεις, για κάποια εργασία, η εργάζεσαι σε εταιρία και θέλεις να ασχοληθείς με Android? απο περιέργια ρωτάω..

Επεξ/σία από Luciddream
Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Δυο μερες εχω που επιασα στα χερια μου Java , xml και Android...eclipse...
Ακομα προσπαθω να προσανατολιστω και να αντιληφθω βασικές έννοιες οπως αυτες παραπανω.

Γνωριζω c++ και ειπα να κανω την ηρωικη μεταβαση σε Java.Τοσα χρονια ακουγα java και java αλλα απ'οτι βλεπω αξίζει και με το παραπάνω. Χομπυ για να περναει η ωρα μωρε!

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

εγώ να σου πώ την αλήθεια αν και επειδή τεμπελιάζω τόσα χρόνια (Gaming) και δούλευα και σε εταιρία άσχετη με πληροφορική τα είχα παρατημένα, τώρα που ξεκινάω να ασχολούμαι λίγο περισσότερο σοβαρά, νομίζω οτι με την C/C++ θα πάθω την πλάκα μου :P

 

τα άλλα μου φαίνονται πιο πολύ scripting παρά programming... αλλα ειναι νωρίς για να μιλάω ίσως αλλάξω γνώμη στην πορεία. και η C# είναι φοβερή γλώσσα... και έχει πολύ δυνατό IDE .. απλά είναι μόνο για windows (περισσότερο)

 

σε ρώτησα γιατι εγώ κάνω την πτυχιακή μου τώρα σε android οπότε θέλω δεν θέλω θα το μάθω.. και έλεγα μήπως είχες κάτι παρόμοιο να παραδώσεις

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

1. η ερωτηση μου είναι με ποιο τρόπο συνδέονται τα δύο αυτά αρχεία μεταξύ τους και "επικοινωνούν" .

 

και επίσης...

 

2. σε περίπτωση που προσθέσω ενα απλό button βλέπω πως αυτομάτως προστίθετε και ο αντίστοιχος xml κώδικας στο αρχείο activity_main.xml.Πώς θα μπορέσω να γράψω τον κατάλληλο κώδικα στο .java αρχείο μου έτσι ώστε πατώντας αυτο το button να αλλάζει το χρώμα του για παράδειγμα;;;

 

3. Θα πρέπει να το δημιουργήσω δυναμικά στο .java αρχείο μου με χρήση της new ;

 

4.Είδα πως έχει events όπως το onClick().Στον embarcadero για c++ κάνοντας double click σε ενα button δημιουργούσε αυτομάτως και την αντίστοιχη μέθοδο οπου μεσα εκει έγραφες για το τί θέλεις να κάνει το button.Εδω θα πρέπει εξ'αρχής να γράψω κάθε μέθοδο ξεχωριστά ή υπάρχει κάποιος αυτοματισμός;;

 

( αρχαριος ειμαι τι να κάνω! )

 

Καλησπέρα φίλε μου,

Λοιπόν,

 

1) και 2). Τα αρχεία που έχεις δηλωμένα κάτω απο το directory res/ στο project σου συνδέονται με τον κώδικά σου μέσω του κώδικα (αρχείο: gen/Package.Name.ProjectName/R.java) που κάνει generate το android. Το αρχείο ( R.java) συνδέει τα id (@+id/ResourceName) των xml resources με τον κώδικά σου, δεν ξέρω ακριβώς τον τρόπο, αλλά γνωρίζω οτι τα αντιστοιχίζει με κάποιες ακέραιες τιμές και όταν καλείς πχ. την FindViewById(), σου επιστρέφεται το View που έχεις το συγκεκριμένο id.

Προσοχή όμως, γιατι καμιά φορά ενώ έχουμε βάλει ενα Button πχ. στο Layout, μπορεί να μην έχει γίνει build το project και το id του Button να μην υπάρχει στο R.java, οπότε το smart complete (ctrl + space) να μην βοηθήσει, και επίσης να σου βγάζει σφάλμα στην γραμμή.

Εν κατακλείδη το αρχείο R.java είναι αυτό που συνδέει τον κώδικά σου με τα Resources σου.

 

3) & 4) Μπορείς να ορίσεις τα properties ενος View, είτε απο το xml, είτε απο τον κώδικα. Οτι σε βολεύει. Για το παράδειγμα με το button πχ. μπορείς στο xml να ορίσεις, ως background ένα Selector.

 

http://www.mkyong.com/android/android-imagebutton-selector-example/

 

To ίδιο μπορεί να γίνει και με ένα τα ActionListeners λογικά, αν και δεν το έχω κάνει ποτέ γιατι προτιμώ να τα γράφω με κώδικα.

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Εχω στα χερια μου το sony xperia X8 ( 2.1 firmware ).Μέσω του eclipse πως θα μπορεσω να δημιουργήσω το "εκτελεσιμο" ( ξέρω πως ο eclipse δεν βγαζει εκτελεσιμο ) και να μεταφερω την εφαρμογη στο κινητό;

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Βγαζει εκτελέσιμο.

 Κατέβασε και εγκατέστησε μία virtual device (=emulator) από το sdk manager (αν δεν το έχεις κάνει ακόμα).

 

http://android.konreu.com/developer-how-to/install-android-sdk-eclipse-and-emulator-avds/

 

 

Εκτέλεσε το πρόγραμμά σου στον emulator. Στο bin directory θα βρεις ένα .apk αρχείο. Αυτό είναι το "εκτελέσιμο". Το αντιγράφεις σε έναν φάκελο στο κινητό στου και μετά το εγκαθιστάς στο κινητό από εκεί.

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Επανέρχομαι με java ερώτηση...

Βλέπω και απο το developer.android.com ( στο XML Attributes ) πως μπορώ με δυο τρόπους να να κάνω το ίδιο πράγμα.Για παράδειγμα μπορώ με χρήση του .xml αρχείου γράφοντας android:Text = "something"; να εμφανίσω σε ένα TextView το something.

 

Επίσης όμως μπορώ να κάνω το ίδιο πραγμα με τον παρακάτω κώδικα java που περιέχετε ας πούμε στην OnCreate function της main class του Project μου....

 

 

 

TextView myTextView = (TextView)findViewById(R.id.myTextView);

myTextView.setText("something");

ποια η διαφορά τους;;;; και ποιος είναι ο καλύτερος τρόπος;;;

( τώρα που το ξανασκέφτομαι μηπως γιατί με τον δεύτερο τρόπο μπορώ ανα πάσα στιγμή και "δυναμικά" να μπορέσω να εμφανίσω οτι θέλω στο TextView ενώ με χρήση της xml θα είναι ας πούμε "στατικό" το περιεχόμενο και δεν θα μπορεί να αλλάξει κατα την εκτέλεση της εφαρμογής;;;; )

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Xml => λιγοτερος κωδικας => λιγοτερα bugs =>  :-D

Code => περισσοτερος κωδικας => περισσοτερα bugs  :mad:

 

Και τα δυο εχουν τα θετικα τους και τα αρνητικα τυος, αλλα σε γενικες γραμμες, οτι μπορεις να το κανεις απλα και γρηγορα με xml το κανεις με xml. Οτι μπορεις να το κανεις παλα και γρηγορα με κωδικα το κανεις με κωδικα.

  • Like 1
Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Δημοσ. (επεξεργασμένο)

Επανέρχομαι με java ερώτηση...

 

Βλέπω και απο το developer.android.com ( στο XML Attributes ) πως μπορώ με δυο τρόπους να να κάνω το ίδιο πράγμα.Για παράδειγμα μπορώ με χρήση του .xml αρχείου γράφοντας android:Text = "something"; να εμφανίσω σε ένα TextView το something.

 

Επίσης όμως μπορώ να κάνω το ίδιο πραγμα με τον παρακάτω κώδικα java που περιέχετε ας πούμε στην OnCreate function της main class του Project μου....

 

 

 

TextView myTextView = (TextView)findViewById(R.id.myTextView);

myTextView.setText("something");

ποια η διαφορά τους;;;; και ποιος είναι ο καλύτερος τρόπος;;;

 

( τώρα που το ξανασκέφτομαι μηπως γιατί με τον δεύτερο τρόπο μπορώ ανα πάσα στιγμή και "δυναμικά" να μπορέσω να εμφανίσω οτι θέλω στο TextView ενώ με χρήση της xml θα είναι ας πούμε "στατικό" το περιεχόμενο και δεν θα μπορεί να αλλάξει κατα την εκτέλεση της εφαρμογής;;;; )

Όταν άρχισα να ασχολούμαι με το Android είχα την ίδια απορία, τελικά κατέληξα στο συμπέρασμα πως όλα αυτά είναι μια προσπάθεια να ικανοποιήσουν ταυτόχρονα δυο σχολές σκέψης - εκείνους που αρέσκονται στην ανάπτυξη του UI μέσω κώδικα (προγραμματιστές), εκείνους που αρέσκονται στην ανάπτυξη του  μέσω XML (web-designers κλπ).

 

Ανάλογος τρόπος παρέχεται και στα Windows χρόνια τώρα, απλά το UI  δεν ορίζεται μέσω XML αλλά μέσω μιας ειδικής "Resource Language".

 

Αλλά εδώ υπάρχει ένα θέμα, ενώ ο Resource Editor των Windows ήταν  αρκετά εξελιγμένος (για την εποχή του ως προϊόν) ο form & XML editor του Android, τουλάχιστον στις πρώτες εκδόσεις, ήταν για τα μπάζα (ακόμα και ο κώδικας XML που παρήγαγε δεν ήταν σωστός!) οπότε πολύς κόσμος στράφηκε στον πιο σίγουρο (τότε) δρόμο, δηλαδή εκείνον του κώδικα.

 

...

 

Ποίο είναι τώρα το σωστό; ..Εκείνο με το οποίο κάνεις την δουλειά σου καλύτερα, εγώ προτιμώ τον κώδικα - μου είναι περισσότερο οικείος - αλλά μόνο όταν πρόκειται για δυναμικό περιεχόμενο, δηλαδή αν υπάρχει ένα  TextView με στατικό κείμενο φυσικά δεν πρόκειται να το ορίσω δυναμικά μέσω κώδικα, θα το ορίσω ως String μέσω του form editor. Από την άλλη πλευρά αν θέλω ένα animation σε κάποιο κοντρόλ επειδή δεν έχω οικειότητα με την XML μου είναι πολύ πιο εύκολο να το δημιουργήσω & ρυθμίσω μέσω κώδικα (!), το ίδιο συμβαίνει και με ορισμένα πολύπλοκα drawables (shapes κλπ).

Επεξ/σία από Directx
Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Σε περίπτωση που στο layout τοποθετήσω ενα απλο textview θα πρέπει στην OnCreate function να το δημιουργήσω δυναμικά με τον παρακάτω κώδικα ή όχι;

 

Γενικά δηλαδή για κάθε view που χρησιμοποιώ στο layout θα πρέπει να δημιουργείται δυναμικά μέσα στον κώδικα μου;

 

 

 

TextView myTextView = new TextView(this);
Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

 

Σε περίπτωση που στο layout τοποθετήσω ενα απλο textview θα πρέπει στην OnCreate function να το δημιουργήσω δυναμικά με τον παρακάτω κώδικα ή όχι;

 

Γενικά δηλαδή για κάθε view που χρησιμοποιώ στο layout θα πρέπει να δημιουργείται δυναμικά μέσα στον κώδικα μου;

 

 

 

TextView myTextView = new TextView(this);

 

Όχι, μπορείς να σχεδιάσεις το Layout σου κανονικά με την βοήθεια του Android form editor και ύστερα αρκεί ένα TextView myTextView = (TextView)findViewById(R.id.ονομασία_κοντρόλ) και φορτώνεις το TextView με @id την "ονομασία_κοντρόλ" στο myTextView component.
 
Το R.id. είναι μια σειρά από σταθερές που αφορούν τα κοντρόλ που παρήγαγε ο Android form editor και το περιεχόμενος της παράγεται αυτόματα από το ADT.
 
Τώρα αν θέλεις σώνει και καλά να μην σχεδιάσεις μέσο του form editor την φόρμα σου.. προφανώς θα πρέπει να δημιουργήσεις δυναμικά τα ανάλογα κοντρόλ, αλλά δεν βλέπω τον λόγο να κάνεις κάτι τέτοιο (τουλάχιστον στην παρούσα φάση).
Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Απ'οτι διαβαζω είναι μαλον περιττο να χρησιμοποιώ constructor γαι την δημιουργία αντικειμένων κτλ.Τον constructor τον αντικαθιστά

η OnCreate function.

Εγω σκέφτομαι πως θα ήταν καλύτερα δομημένος ο κώδικας εαν για παράδειγμα αν ηθελα να δημιουργήσω ενα TextView να εφτιαχνα μια ξεχωριστή κλάση π.χ myTextViewClass { } οπου στον constructor της θα δημιουργόυσα ενα αντικείμενο τύπου TextView και με συναρτήση get να "δημιουργουσα" κάθε φορα ενα νέο TextView obj το οποίο θα καλούσα μέσα στην OnCreate.Επίσης με συναρτήσεις set και get να "εγραφα" στο TextView οτι ήθελα και απλά εντος της OnCreate function και πάλι να είχα ενα TextViewClassObj.setText( myString ); !!

 

είναι σωστή η σκέψη η απλά πλατιάζω με αποτελεσμα να αργει και η εφαρμογή γιατι ετσι καλω αρκετες συναρτησεις με κοστος στον χρονο αποκρισης;

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε

Πρέπει να είστε μέλος για να αφήσετε σχόλιο

Δημιουργία λογαριασμού

Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!

Δημιουργία νέου λογαριασμού

Σύνδεση

Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.

Συνδεθείτε τώρα
  • Δημιουργία νέου...