PDA

Prikaži potpunu verziju : Problem sa Android aplikacijom


Milinko
5.7.2013, 8:51
Pozdrav,
Dobio sam zadatak od profesora da napravim jednu aplikaciju za izvjestavanje kvarovima na zgradama. Interesantan je projekat. :)
E sad, tek sam skoro poceo sa ucenjem android programiranja, tako da je napredak usporen...Moje pitanje je, kako da namjestim da mi se svi screen-oni tj. aktivitiji automatski pomjere iznad tastature kad ona iskoci?
Tako da vidim citav ekran prlikom kucanja. Pokusavam da ovo namjestim, da ne bih skrolao do dna ekrana, da bih isao na dugme next. Ovako bi mi uvjek bilo iznad tastature. Kao sto kazu "pri ruci" :)
Pitao sam google par puta, ali nisam dobio pravi odgovor.

Milinko
8.7.2013, 13:43
Nasao sam kako treba.
E sad imam drugi problem.
Ja imam 6 ekrana(Login, PrviEkran, DrugiEkran, TreciEkran, CetvrtiEkran i Baza).

Kad se ulogujem, pojavi mi se Prvi Ekran. Na njemu se nalazi lista i dva dugmeta (close i add). Kad kliknem add, otvara mi se DrugiEkran. Evo slike ekrana: http://postimg.org/image/w3iint91x/ , http://postimg.org/image/mk8tucljp/ , http://postimg.org/image/eg0pplz4l/. E to su mi ta tri ekrana. I sad kad ja ubacim podatke na DrugomEkranu i pritisnem next, hocu da te podatke insertuje i da ih update-uje na TreciEkran. Sa Treceg ekrana kad ubacim podatke treba da ih update-uje i klikom na next idem na Cetvti ekran. Kad sam na Cetvrtom ekranu, ubacim podatke i klikom na dugme save treba da ubaci sve podatke od Drugog ekrana do Cetvrtog ekrana u bazu. Profa je rekao Insert i Update se radi. Ubacim ID i na drugim ekranima samo da radim update i da mi se mijenja ID. Ne znam da li sam dovoljno jasan, posto jos uvijek noob u ovome.
Evo linkova sa kodom (Drugog, Treceg, Cetvrtog i Baze): http://speedy.sh/C8Htj/drugiekran.txt , http://speedy.sh/YqUPb/treciekran.txt , http://speedy.sh/aFg6G/cetvrtiekran.txt , http://speedy.sh/TpjmR/baza.txt . Hvala
Kupujem cokoladu !

Ivan452
8.7.2013, 14:27
Mozes da uradis kako ti je profa rekao, on je mislio na sledece:
- Kada na drugom ekranu kliknes Next, kreiras slog u bazi i ubacis podatke sa drugog ekrana (Building, Floor i Room).
- Kada na trecem ekranu kliknes Next update-ujes slog koji si vec kreirao radis update polja sa treceg ekrana (Type, Category, Description)
- Na cetvrtom ekranu isto kao za treci.

Medjutim, taj pristup ima svoje prednosti i mane. Prednost je sto ako korisnik izadje iz programa u npr. trecem ekranu kada se vrati ti mozes da mu ponudis da do kraja unese podatke koje je poceo.
Mana je sto moras da vodis racuna o tim nezavrsenim podacima.

Ja ne bih radio po gornjem principu, smatram ga nepotrebno komplikovanim.
Umesto toga, napravi jednu klasu koja ce odgovarati poljima u tvojoj tabeli npr:
Klasa1 ima polja Building, Floor, Room, Type, Category, Description, Responsibility (ovo ti nije dobro spelovano), Date, Photo.
Onda kada korisnik na prvom ekranu klikne Add ti kreiras objekat te klase (objekat da bude globalno dostupan svim ekranima, moze globalno). I onda na svakom ekranu poljima u objektu dodaj odgovarajuce vrednosti i na kraju samo vrednosti i na kraju upisi vrednosti tih polja u bazu.

P.S
Koristi pastebin za deljenje koda.

Milinko
8.7.2013, 17:45
Hvala na odgovoru. Skontao sam ja njega sta je rekao, samo je meni problem primjeniti to u program. Da li bi mogao da mi samo napises primjer koda za insert i update, pa bih ja nastavio? :)

Milinko
8.7.2013, 17:54
next.setOnClickListener(new View.OnClickListener() {

@Override
public void onClick(View v) {
int id = 1;
Cursor c = baza.rawQuery("SELECT MAX(" + db.KOLONA_B_ID + ") + 1 FROM Building", null);

if(c.moveToFirst())
{
if(c.getInt(0) > 0)
id = c.getInt(0);
}

ContentValues cv = new ContentValues();
cv.put(db.KOLONA_B_ID, id);

try
{
Baza.insert(db.TABELA_BUILDING, db.KOLONA_B_ID, cv);

}
catch(Exception ex)
{

}
finally
{

}


}
});
.............................................
Evo uzeo sam Building tabelu, daa li ovako nesto sa next button? :)

Ivan452
8.7.2013, 18:04
Nisam ti video kod za bazu, jer nisam mogao da ga skinem sa onog sajta. Ako hoces da to pogledam okaci ga na paste bin i daj linkove.

Nema potrebe da sam vodis racuna od ID-jevima, stavices da ti oni budu autoincrement. Imas funkciju last_insert_rowid(); sa kojom mozes da dobijes ID za update.
Znaci, na drugom ekranu odradis insert, na svim sledecim update.

Milinko
8.7.2013, 19:29
Baza , http://pastebin.com/1zYvEzAA
DrugiEkran , http://pastebin.com/RuEhHp8K
TreciEkran , http://pastebin.com/Qtkvz83b
CetvrtiEkran, http://pastebin.com/GFYuPwd0

Ivan452
8.7.2013, 21:41
A gde ti je ovo: Baza.insert?

Samo mislim da se obicno radi za svaku tabelu posebna klasa, i onda u okviru svake klase realizujes funkcije konkretne za tabelu koju oznacava ta klasa. Ali nije bitno.

A dobro ti je sve ostalo probaj samo onako kako sam ti napisao. Uradis insert onda ides update, a keyeve postavis na autoincrement jer nema potrebe da vodis racuna o tome.
Ali imaj na umu da ces morati da nekako obradis nepotpune slogove u bazi.

Milinko
8.7.2013, 23:13
A nisam jos ubacio...cekao sam tebe da mi provjeris, sad cu to ja :)

Hvala ti, sad mi je jasnije sta treba da radim. Poz

Ivan452
9.7.2013, 2:13
OK. Srecno :)

I ne znam sta si planirao za sliku, ali preporucujem ti da ne cuvas kao neki Blob ili nesto tako vec kao putanju.