[ normandija @ 08.09.2011. 20:02 ] @
Da li mi neko sa vise iskustva moze reci na koji nacin (i da li je to uopste moguce) mogu da simuliram na android simulatoru wifi i edge mrezu? jer treba da parsiram neki xml sa interneta pa bih prvo da proverim da li imam dostupan recimo wifi,pa ako nema onda edge,ako nema ni to onda naravno error :), s tim da sam dozvolio permisiju INTERNET u AndoridManifest.xml fajlu. Imam neki primer sam SAXParserom koji radi u eclipsi, ako naravno kaci se na net preko kompa, pa me zanimalo kako mogu da simuliram konekciju,a da naravno ne prebacujem i instaliram po telefonu jer aplikacija jos nije zavrsena.
[ nnn @ 08.09.2011. 20:07 ] @
Sto jednostavno ne testiras na telefonu, samo ga povezes preko usb-a, ukljucis debugging na telefonu i mnogo elegantnije i brze. Aplikaciju instaliras na telefonu jednim klikom u eclipse.

Inace mislim da to sto hoces tesko moze, ne mozes da forsiras kuda ce internet da ide, ako je dostupan wifi telefon ce automatski da ide preko wifi-a. Jedino sto mozes da uradis je da pokusas preko wifi-a pada ugasis wifi na telefonu, i onda pokusas rpeko edge.

[ nemnesic @ 08.09.2011. 20:20 ] @
slazem se sa @nnn om 100%.
ali ako hoces tezi nacin pogledaj dummynet
http://info.iet.unipi.it/~luigi/dummynet/



--
http://www.ndnlogic.com
gtalk: [email protected]
msn: [email protected]
yahoo: nemanja_nesic
aim: serbianking7
[ normandija @ 08.09.2011. 20:27 ] @
tako sam i uradio, sjajna stvar :)) bolje preko fona mnogo bolje

[Ovu poruku je menjao normandija dana 08.09.2011. u 23:42 GMT+1]
[ normandija @ 09.09.2011. 13:13 ] @
e jos jedno pitanje ako moze ....na koji nacin da izbegnem onaj standardni androidov dialog box o gresci kad baci neki exception pa pise "Sorry, the application has stopped unexpectedly. Pleae try again? Recimo pokusao sam da u try catch blok stavim sta ja hocu,ali on opet po svom .
[ nnn @ 09.09.2011. 13:43 ] @
Ne taj izuzetak,

povezi telefon idi na ddms u eclipse i gledaj logcat, vidi koji ti exception baci, pa njega vataj ili jos bolje gledaj zasto je doslo do njega i potrudi se da ne dodje.

Tamo ce ti napisati na kojoj liniji koda je program pucao i koji je izuzetak.
[ Dejan Lozanovic @ 09.09.2011. 14:08 ] @
Citat:
normandija: Da li mi neko sa vise iskustva moze reci na koji nacin (i da li je to uopste moguce) mogu da simuliram na android simulatoru wifi i edge mrezu? jer treba da parsiram neki xml sa interneta pa bih prvo da proverim da li imam dostupan recimo wifi,pa ako nema onda edge,ako nema ni to onda naravno error :), s tim da sam dozvolio permisiju INTERNET u AndoridManifest.xml fajlu. Imam neki primer sam SAXParserom koji radi u eclipsi, ako naravno kaci se na net preko kompa, pa me zanimalo kako mogu da simuliram konekciju,a da naravno ne prebacujem i instaliram po telefonu jer aplikacija jos nije zavrsena.


A sto ne bi probao da citas i parsiras taj dokument inace, pa ako prilikom citanja izleti IOException znaci nemas net i onda izbacis gresku. Sutra ce se pojaviti nesto trece kao mrezni interface sto nece biti edge a korisnik recimo nece biti na wifi. I eto tvoje aplikacije u problemu.
[ normandija @ 09.09.2011. 16:28 ] @
Tako sam sada i stavio u try catch bloku mi je citanje xml-a, i kad krene da otvara xml tj da cita,ako ne moze baci mi exception,ali mi je problem sto ne znam kako da ga nateram da umesto njegovog standardnog dialog boxa koji sam napisao u prethodnoj poruci, prikazem ja neki svoj. Ja u debugeru vidim na kojoj liniji pukne, bas na toj kada treba poceti parsiranje,a recimo iskljucim mu svaku konekciju na net, ali ne mogu da se resim default alert boxa.
[ nnn @ 09.09.2011. 18:18 ] @
Pa nema veze sto je u try bloku, ti u cath-u ne vatas taj exception koji je uzrokovao pucanje aplikacije.
[ normandija @ 09.09.2011. 19:28 ] @
ipak je bip problem u drugoj klasi koja kreira layout za tabove,a jedan od tih tabova treba internet konekciju,a nisam to stavio u try catch blok,a tu je pucalo ;) samo mi malkice kasni ucitavanje sa neta,tj parsiranje, pa ne znam da li je to pametno staviti tu neki loader i poseban thread ?



[Ovu poruku je menjao normandija dana 09.09.2011. u 23:14 GMT+1]
[ nnn @ 09.09.2011. 22:46 ] @
To moras u thread, ja to radim ovako nekako:

Code:


public class MyActivity extends Activity {

private DataBean data;
...
onCreate(.....) {... }

public void doRequest() {

final ProgressDialog progress = ProgressDialog.show(MyActivity.this, "Please Wait..", "Communicating with server");

new Thread() {
       public void run() {
       data = HTTP_client.getMyData();
       progress.dismiss();
       handler.sendEmptyMessage(0); 
       }
       }.start();
}

private Handler handler = new Handler(){
    @Override
    public void handleMessage(Message msg) {
        doSomethingWithUI(...);
    }
    };



Ovo sam ti pisao iz glave, mrzelo me da otvaram eclipse da trazim primer. Ali ovako ti se pojavi please wait progress dialog dok traje ucitavanje, kada se podaci ucitaju da se signal handleru i on odradi posao. Ovde koristim send empty message, ali mozes da saljes Message klasu handleru sa raznim podacima.

[ normandija @ 10.09.2011. 10:44 ] @
e hvala brate na primeru, nadam se da cu se snaci :) a to sto kazes da se salje poruka handleru, jel to znaci da kad su podaci ucitani da moze da skloni loading box i da prikaze stranicu sa podacima ? ili ovaj handler i ne treba ako ne prosledjujem nikakve podatke glavnoj niti?



[Ovu poruku je menjao normandija dana 10.09.2011. u 13:53 GMT+1]
[ nnn @ 10.09.2011. 13:17 ] @
Dialog mozes da dissmisujes direktno iz Thread-a, a Handler ti sluzi ako hoces da osvezavas UI iz thread-a koji nije UIThread. Drugin nacin je da koristis RunOnUIThread( Runnable ), ali ovde mi se ponekad desavaju cudne greske i pucanje aplikacije.

Do sada sam odradio izmedju 30 i 40 Android aplikacija, sto malih sto vecih i dosta stvari ovako radim.
[ normandija @ 10.09.2011. 14:33 ] @
Svaka cast za toliko aplikacija, ja tek pravim prvu :) i vec sam se zapetljao prilicno. Pokusao sam radim po tvom primeru,ali ne mogu da dobijem rezultat pa ako bi mogao samo da pogledas klasu,okacicu je, ne mogu da nadjem gresku,a puca Force Close. I hvala mnogo na pomoci.

Code:

public class SaobracajActivity extends TabActivity
{    
    
    
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_saobracaj_tabs);
                                         
         createTabs();
                 
    }
          
    
      private void createTabs(){
        
                     
        final ProgressDialog  progress = ProgressDialog.show(SaobracajActivity.this, 
            "Molimo sačekajte...", "Podaci se obrađuju");
        
      new Thread() {    
        public void run() {
            
            Resources res = getResources(); 
            TabHost tabHost = getTabHost();  
            TabHost.TabSpec spec;  
            Intent intent;  
                                                                
                    
                   
        intent = new Intent().setClass(SaobracajActivity.this, SaobracajAMSParse.class);
        spec = tabHost.newTabSpec("amsbih").setIndicator("AMS",
                    res.getDrawable(R.drawable.tab_amss))
                    .setContent(intent);
        tabHost.addTab(spec);

        intent = new Intent().setClass(SaobracajActivity.this, SaobracajInfoTab.class);
        spec = tabHost.newTabSpec("tel").setIndicator("Važni brojevi",
                    res.getDrawable(R.drawable.tab_info))
                     .setContent(intent);
        tabHost.addTab(spec);

        tabHost.setCurrentTab(1);
        
        progress.dismiss();
                          
            }
            }.start();
                
        } }
[ nnn @ 10.09.2011. 15:31 ] @
Pa daj mi Log tog dela gde pukne.
[ normandija @ 10.09.2011. 19:04 ] @
evo ovde sam okacio LogCat i Variables dio pa pogledaj. pogledaj na slici prikazuje oznacio sam ga java.lang.RuntimeException: Can't create handler inside thread that has not called Looper.prepare(), e sada da li je to to i zasto je ta greska? kao ne moze se kreirati handler (a to je iz klase koja vrsi parsiranje,a nju pokrecem u novoj niti) unutar niti. kako da to resim

http://www.sendspace.com/file/2vik00

[Ovu poruku je menjao normandija dana 10.09.2011. u 20:23 GMT+1]
[ nnn @ 10.09.2011. 20:06 ] @
Pa ti pokusavas iz threada da update UI, to ne ide.

Ali kao prvo nemoj da korsitis te tabove, mnogo su lose odradjeni, bolje jednostavno napravis svoje.

Napravis jedan AcitivitySuperclass koji nasledjuje Activity, u njega stavis funkcionalnost tabova, i svaki activity koji treba da ima tabove, nasledjuje taj superclass activity.

Ali ako hoces ovako, sve ovo sto imas u threadu, prebaci u Handler.handleMessage(Message) kao sto imas u onom mom primeru, a u Thread.run(){..{ ostavi samo pozivanje tog parsiranja i skidanja sa neta.

i vidi kako da te podatke sto si izparsirao prosledis tom handleru, ili preko neke globalne primenjive na nivou klase, ili preko message.
[ normandija @ 11.09.2011. 00:51 ] @
Pa da,vidim tamo i na netu o opisu da ne moze na taj nacin. A to sto kazes za tabove da napravim "svoje", kako mislis svoje? Ovaj kod sto sam iskoristio da napravim tabove u ovoj klasi je uzet sa Android developer sajta, tako da mislim da je ispravan.

A sto se tice super klase za kreiranje tabova, razumem sta hoces reci i to je dobra varijanta,samo ne kontam kako da napravim ako neka strana treba da ima 3 taba neka 2, neka 1? Da li mozes da mi das ili neki primer ako vec imas nesto radjeno slicno,jer sam bas pocetnik oko ovoga, pa da se ne zapetljam.

A za thread, rece da prebacim ovo u handler kako si dao primer. Jer meni je kako vidis gore u klasi u tom delu gde se kreiraju tabovi vec i vezana odredjena Activity klasa koja ce se izvrsiti nad odredjenim tabom (tj, vrsi se parsiranje). A vidim da Android nudi jos jedno resenje AsyncTask za pozadinske operacije i cini mi se kao bolje izvedeno, kakvo ti je iskustvo sa time


[Ovu poruku je menjao normandija dana 12.09.2011. u 00:26 GMT+1]