Forum Sveta kompjutera

Nazad   Forum Sveta kompjutera > Test Run > Programiranje

Programiranje Programski jezici, tehnike, alatke...

Odgovor
 
Alatke vezane za temu Vrste prikaza
Stara 28.1.2011, 0:45   #1
Ivan452
Veteran
 
Član od: 25.7.2008.
Lokacija: Beograd
Poruke: 772
Zahvalnice: 33
Zahvaljeno 189 puta na 152 poruka
Slanje poruke preko MSN-a korisniku Ivan452
Određen forumom Android - promena 'formi'

Pozdrav svima,

tek sam poceo da se bavim malo Android programiranjem, ne bih li napravio aplikaciju koja mi je potrebna.

Sada zanima me sledece:
Kako se vrsi promena 'formi' u jednoj android aplikaciji?

Ja sam probao nesto da odradim onako kako je meni delovalo...ali ne mnogo uspesno.
Pa me zanima gde gresim.

Naime, recimo da imam 2 forme tj 2 .xml fajla
na main.xml imam dugme klikom na koje bih trebao da odem na list.xml.
na list.xml imam dugme klikom na koje bih trebao da odem na main.xml.

E sada, ja sam odradio prvi deo. Stavio dugme, napravio onClickListener().
Sa main.xml predjem na list.xml i onda sa list.xml na main.xml
Medjutim to mogu da uradim samo jedanput. Posle toga listeneri kao da vise ne vaze.
Inace sama incijalizacija dugmica i listenera mi je u metodi onCreate()
deklaracija je van nje, tako da ne vidim zasto ne bi radilo?
A samo promenu sam radio samo sa:
setContentView(R.layout.main);
i
setContentView(R.layout.list);

Trazio sam po netu, nasao sam neki nacin kada se radi sa dve Activity klase, i Intentima, ali mi se isti problem javio.

evo da okacim i kod pa ako neko zna i ako ga ne mrzi da baci pogled ako nisam bio jasan u objasnjavanju.


Kod:
public class test2 extends Activity 
{
	private static Button btnNewEntry;
	private static Button btnBack;
	private static Button btnList;
	private static Button btnBackFromTheList;
	private static String NOTES666="notes666.txt";
	
	
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) 
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main); 
        btnNewEntry=(Button)findViewById(R.id.btnNew);        
        btnList=(Button)findViewById(R.id.btnList);
        btnList.setOnClickListener(btnListListener);
        btnNewEntry.setOnClickListener(btnNewListener);
    }
    
    
    public Activity a()
    {
    	return this;
    }   
    
    private OnClickListener btnNewListener = new OnClickListener()
    {
        public void onClick(View v)
        {
        	setContentView(R.layout.newentry);  
        	btnBack=(Button)findViewById(R.id.btnBack);
        	btnBack.setOnClickListener(btnBack2Listener);   
        }
    }; 
    
    private OnClickListener btnBack1Listener = new OnClickListener()
    {
        public void onClick(View v)
        {
        	setContentView(R.layout.main); 
        }
    };
    
    private OnClickListener btnBack2Listener = new OnClickListener()
    {
        public void onClick(View v)
        {
        	setContentView(R.layout.main); 
        }
    };
    
    private OnClickListener btnListListener = new OnClickListener()
    {
        public void onClick(View v)
        {
        	setContentView(R.layout.list);
    		btnBackFromTheList=(Button)findViewById(R.id.btnBackFromList);
    		btnBackFromTheList.setOnClickListener(btnBack1Listener);
    		ListView ls=(ListView)findViewById(R.id.listView1);
    		String lv_arr[]=readFromFile();
    		StringBuffer buf=new StringBuffer();
            ls.setAdapter(new ArrayAdapter<String>(a(),android.R.layout.simple_list_item_1 , lv_arr));
        }
    };
       
}
sve je inace bilo u jednom listeneru, ali sam to podelio na vise da vidim da nije do toga, ali nije.
Ivan452 je offline   Odgovor sa citatom ove poruke
Stara 28.1.2011, 1:17   #2
dragomix
Deo inventara foruma
 
Član od: 1.9.2006.
Lokacija: MIRA
Poruke: 5.037
Zahvalnice: 437
Zahvaljeno 1.113 puta na 716 poruka
Određen forumom Re: Android - promena 'formi'

Ја мислим да би требало, ако мислиш да ти све ради како треба, ОБАВЕЗНО да користиш intent, односно да имаш посебан activity везан за сваки поглед (односно XML фајл). На пример овако:

Kod:
public void onClick(View v) {
switch (v.getId()) {
case R.id.dugme:
Intent i = new Intent(this, Primer.class);
startActivity(i);
break;
}
Овим би заправо покренуо класу Primer која би искористила посебан поглед намењен конкретно њој кроз setContentView().
dragomix je offline   Odgovor sa citatom ove poruke
Sledeći korisnik se zahvaljuje korisniku dragomix na korisnoj poruci:
Ivan452 (28.1.2011)
Stara 28.1.2011, 11:58   #3
irreal
V.I.P. Programiranje
 
Član od: 9.1.2009.
Lokacija: Beograd, Banovo Brdo
Poruke: 1.157
Zahvalnice: 83
Zahvaljeno 448 puta na 303 poruka
Određen forumom Re: Android - promena 'formi'

Tako je, ne dolazi u obzir podesavanje root view-a za promenu "forme".

Predlazem ti da kada kreriras novu "formu" dupliras neku od postojecih klasa, a zatim dupliras i postojeci xml fajl, pa ih samo izmenis i obavezno u manifest fajlu (rucno ili kroz Eclipse plugin interfejs) dodas novi activity.

Ako si u OBE klase pravilno implementirao onclicklistener, nema nikakvog razloga da ne radi kako treba. U svakom slucaju uradi ovako pa ako jos imas problema, kaci da pogledamo.

Inace, dobro razmisli da li zelis da druga "forma" kreira novu instancu prve forme ili da se samo vrati na prethodnu.

Posto activity u androidu ide u stack, kada kreiras drugu formu i korisnik zavrsi sa koriscenjem iste, trebao bi samo da pozoves finish(); komandu i drugi activity ce se zavrsiti i automatski te vratiti na prethodni koji je ostao u stacku.

isto ce se desiti i kada korisnik stisne back dugme.


Veoma bi pozeljno bilo da detaljno procitas uvodne clanke na android developer sajtu. Pogotovo Application and components lifecycle.
Android je vrlo specifican sa svojim stanjima, intentima, activityjima i view-ovima.
ali kada se naviknes na Android shvatis da je vrlo dobar sistem.


Ja obozavam kad mi naleti posao da piskaram nesto za Android.
irreal je offline   Odgovor sa citatom ove poruke
Sledeći korisnik se zahvaljuje korisniku irreal na korisnoj poruci:
Ivan452 (28.1.2011)
Stara 28.1.2011, 13:01   #4
VojaM
Ad Ministrator
 
Avatar korisnika VojaM
 
Član od: 19.8.2005.
Lokacija: Beograd, SK
Poruke: 7.280
Zahvalnice: 29
Zahvaljeno 3.041 puta na 1.544 poruka
Određen forumom Re: Android - promena 'formi'

Možda Ivanu to nije potrebno, ali ostali Android entuzijasti mogli bi da nađu nešto korisno i ovde.
VojaM je offline   Odgovor sa citatom ove poruke
Sledeći korisnik se zahvaljuje korisniku VojaM na korisnoj poruci:
Ivan452 (28.1.2011)
Stara 28.1.2011, 17:54   #5
Ivan452
Veteran
 
Član od: 25.7.2008.
Lokacija: Beograd
Poruke: 772
Zahvalnice: 33
Zahvaljeno 189 puta na 152 poruka
Slanje poruke preko MSN-a korisniku Ivan452
Određen forumom Re: Android - promena 'formi'

Hvala na odgovorima, veoma korisno.

Pa tek sam juce poceo onako malo da nabadam, pa rekoh usput kako naidjem na koji probem i novinu pa cu da citam o tome

Evo danas sam odradio to ispocetka, sa Activity i Intentima.
Svakako cu procitati to sa life cycle i taj uvodni deo, nasao sam neku literaturu koja deluje OK. A svakako deluje logicnije da kada se zavrsi sa 'formom' da se oslobode resursi.

Takodje ovo bi moglo da se uradi sa nekim ViewFlipperom, medjutim to nisam uspeo da ispravno ubacim u pola projekta.
Ivan452 je offline   Odgovor sa citatom ove poruke
Odgovor

Bookmarks sajtovi

Alatke vezane za temu
Vrste prikaza

Vaš status
Ne možete postavljati teme
Ne možete odgovarati na poruke
Ne možete slati priloge uz poruke
Ne možete prepravljati svoje poruke

BB kod: uključeno
Smajliji: uključeno
[IMG] kod: uključeno
HTML kod: isključeno


Slične teme
tema temu započeo forum Odgovora Poslednja poruka
Windows Mobile > Android 2.1 markos807 Aparati i oprema 10 23.1.2011 17:07
[Mobilni telefon] LG Android Etna GW620 EVE jonathan Opisi, recenzije i testovi 11 12.10.2010 2:11
[Android] Android aplikacije jonathan Programi za mobilne telefone 1 26.7.2010 13:09
Vip Android izazov (prijave do 31. decembra 2009) Chivan Dešavanja i događaji 0 1.12.2009 17:13
Google Android, novi OS?! Casper'NS Operativni sistemi 11 24.9.2009 12:50


Sva vremena su po Griniču +2 h. Sada je 10:27.


Powered by vBulletin® verzija 3.8.7
Copyright ©2000–2021, vBulletin Solutions, Inc.
Hosted by Beograd.com