Hirdetés
Új hozzászólás Aktív témák
-
Karma
félisten
Ezt nézd meg: stackoverflow
-
kemkriszt98
tag
válasz
WonderCSabo
#1897
üzenetére
Köszönöm, működik

-
WonderCSabo
félisten
válasz
kemkriszt98
#1895
üzenetére
A Toast-ot nem tudod használni háttérszálon, csak a UI szálon. Az onPostExecute-ban hívogasd a Toast-ot, az az UI szálon hívódik meg, és pont erre való.
-
Benex
senior tag
Java kód szinten, hogy tudom leellenőrizni, hogy rootolt-e a készülék, vagy nem? (manifest permission nélkül)
-
Karma
félisten
válasz
h1ght3chzor
#1888
üzenetére
Egyébként ilyen lehetőség nincs. Használd a ContentProvidert ha a felhasználó bevonása nélkül akarsz működni.
-
Benex
senior tag
válasz
h1ght3chzor
#1890
üzenetére
Én az intentet hívása elé tenném.

-
Benex
senior tag
válasz
h1ght3chzor
#1888
üzenetére
Most lehet hülyeség írok (kezdő vagyok még eléggé) de valahol olvastam a "notifydatasetchanged() ;" cuccrol, és mintha ilyenre lenne jó, hogy frissíti a listát és utána ha meghivod az intentet szerintem hozzá adja. (amit tanultam eddig abból élek, szóval megint elmondom, hogy bocsánat ha hülyeség írtam
) -
h1ght3chzor
őstag
Ha ezt az intent.putExtra-t használom, akkor hogy tudom megcsinálni, hogy a default calendar-t válassza ki, és a startActivity(intent); ne hívja meg azt a felületet, ahol még módosítani tudom a hozzáadott event-et, hanem automatikusan illessze be?
public void insert() {
TimeZone timeZone = TimeZone.getDefault();
Intent intent = new Intent(Intent.ACTION_INSERT,
CalendarContract.Events.CONTENT_URI);
// Add the calendar event details
intent.putExtra(CalendarContract.Events.TITLE, "Launch!");
intent.putExtra(CalendarContract.Events.DESCRIPTION,
"Learn Java Android Coding");
// intent.putExtra(CalendarContract.Events.EVENT_LOCATION,
// "Sanfoundry.com");
Calendar startTime = Calendar.getInstance();
startTime.set(2014, 3, 18, 13, 30);
intent.putExtra(CalendarContract.EXTRA_EVENT_BEGIN_TIME,
startTime.getTimeInMillis());
Calendar endTime = Calendar.getInstance();
endTime.set(2014, 3, 18, 14, 30);
intent.putExtra(CalendarContract.EXTRA_EVENT_END_TIME,
startTime.getTimeInMillis());
intent.putExtra(Events.EVENT_TIMEZONE, timeZone.getID());
// intent.putExtra(CalendarContract.EXTRA_EVENT_ALL_DAY, true);
// Use the Calendar app to add the new event.
intent.putExtra(Events._ID, 3);
startActivity(intent);
} -
thon73
tag
válasz
eastsider
#1881
üzenetére
Régen is ui threaden töltődött, aztán mégis használtuk a progikat...
Ráadásul, úgyis meg kell várni amíg betöltődik, mer ugye épp a listát akarod megnézni.
A saját tapasztalatom az, hogy érdemes Content Providert csinálni. Kicsit korlátozott, amit az adatbázissal csinálhatsz, de jobban átlátható a kód, könnyebben belepasszol abba, amit az Android szeretne.Én ugyan nem vagyok nagy guru, de szívesen belenézek a debugba; több szem többet lát...
-
Benex
senior tag
válasz
h1ght3chzor
#1878
üzenetére
Én [ezt ] találtam, remélem segít

-
fatal`
titán
válasz
h1ght3chzor
#1878
üzenetére
Nem tudom, hogy működik-e még, meg csak valahol olvastam, nem volt rá szükségem, de próbáld meg drag & droppal rádobni a gapps zipjét.
-
eastsider
nagyúr
köszi! le is szedtem még régebben

igen, a konstruktor deprecated
@SuppressWarnings("deprecation")
@Override
public void bindView(View view, Context context, Cursor cursor)
{
super.bindView(view, context, cursor);nekem megy így, csak deprecated. nem egy nagy adatbázis... szarni rá, és csináljam így, vagy ha már itt tartok okulásképp érdemes a content providert?
azt olvastam, betöltésnél lehet ez gázos, mert az UI threadben töltődik be az adatbázis is...
-
thon73
tag
válasz
eastsider
#1879
üzenetére
Én megcsináltam mindkettőt. Ha CursorLoader-t szeretnél használni, akkor kell hozzá ContentProvider is - úgy tudom. Egyiket se nagyon nehéz elkészíteni, de az utóbbi meglehetősen hosszú. A kész Loader csak pár sor viszont. Saját Loader csak akkor kell - szerintem - ha nem sqlite a forrás, hanem valami elvarázsolt dolog.
Loader nélkül már nem kedveli a rendszer - vagyis deprecated, de működik.
Pár hozzászólással ezelőtt feltettem egy E-number kezelő kódot, abban mindkettőre szerepel példa. -
kemkriszt98
tag
Sziasztok, a php kódba mit kell írnom, hogy "visszakuldjem" amit kell a httpget kérés eredményeképp ? A php kód megvan tehát ha bele írok pár print függvényt akkor böngészőben tökéletesen működik. ...
-
fatal`
titán
válasz
h1ght3chzor
#1873
üzenetére
Genymotionre úgytudom lehet gappsot flashelni és utána működőképes lehet a dolog.
(#1866) Benex: Az FC valószínűleg valami exception miatt van, esetleg nézd meg az adb logot.

-
eastsider
nagyúr
Sziasztok!
kicsit megakadtam
körülmények: SQlite adatbázis, 2 tábla össz, és megcsináltam CursorAdapterrel a listview feltöltését.
teljesen jól működik.. de tudjuk, hogy a cursoradapter deprecated, és az is nyilvánvaló hogy miért... az én appomnál gyorsnak tűnik, de mégsem valami elegáns a megoldás....
hogy tudnám ezt átalakítani LoaderManager-esre? ott akadtam meg, hogy, hogy kérem le a rekordokat... mert van egy APIdemo, amiből a contactokat íratja ki szépen, de nekem ez így nem jó...
ContentProvidert is néztem, hogy kellhet, ámbár az alkalmazásom adatait nem akarom megosztani más környezetekkel
merre nézelődjek? a cursoradapterrel egyébként szépen működik
contentprovider ready a sqliteonhelper osztályom, de ha nem lenne muszáj ezzel bíbelődni, kihagynám a dolgot -
Karma
félisten
válasz
h1ght3chzor
#1871
üzenetére
Venni egy olcsó androidos telefont, és azon kísérletezni... A szöveg elég egyértelmű, hogy kell egy Google (vagy más naptárt szolgáltató) fiók, de még ha fel is vennél G fiókot, nem fog működni.
-
Karma
félisten
válasz
h1ght3chzor
#1869
üzenetére
Sima intentnél ha több lehetőség is van, akkor majd a rendszer megkérdi a felhasználót.
Kódot most nem tudok produkálni erre, de két lehetőség van attól függően hogy mit szeretnél. Vagy most megnézed a nálad lévő eszközön hogy milyen naptár van és annak az ID-jét beégeted a kódba az 1-es ID helyett; vagy felraksz a UI-ra egy Spinnert amivel ki lehet választani a szimpatikusat.
A Cursorban minden adat benne van - mint láthatod, lekéri az ID-t, a naptár nevét, színt, stb.
-
Karma
félisten
válasz
h1ght3chzor
#1860
üzenetére
Nézd meg még egyszer a dokumentációt a kódrészlet kapcsán, a példakód végén ott van, hogy mire használja az Urit. Neked nem feltétlen van rá szükséged, csak akkor, ha ezt a konkrét eseményt újra el akarod érni keresgélés nélkül.
Ugyanis a kódrészlet a naptár ContentProviderrel beszélget. A ContentProviderek pedig minden általuk kezelt objektumot (pl. eseméyn) egy Urival azonosítanak; az insert ezt adja vissza miután megtörtént a beszúrás.
A kódodnak egyetlen problémája van így ránézésre: a calendar_id-t nem lehet csak úgy hasraütésszerűen 1-re állítani. Meg kell nézni, hogy a telefonon milyen naptárak vannak, és a szimpatikusat választani. A középső dobozban van a kód, amivel le tudod őket kérdezni.
-
h1ght3chzor
őstag
válasz
h1ght3chzor
#1860
üzenetére
Senki?
-
Benex
senior tag
Unfortunetly, Simple Reboot has stopped , gondoltam arra , hogy reboot miatt áll le, de nem hiszem, hogy az a baj. Arra gondoltam , hogy ilyenkor kell e a finish();???
(Újabb észrevétel ART vm alatt nem megy,azaz itt is FC lesz, de itt nem is indul újra, most állok vissza dalvik-ra ) -
Benex
senior tag
Sziasztok.
Egy nagyon egyszerű prgramot akarok csinálni (vagyis kész van) de van egy kicsi hiba. A program csak annyi lenne , hogy egyetlen gomb van ami újra indítja a telefont.
A Manifest-ben beletettem , hogy kérjen superuser engedélyt , így:
<uses-permission android:name="android.permission.ACCESS_SUPERUSER"/>Ezzel nincs is semmi bajom, a kód hogy reboot legyen így néz ki:
public void reboot(View v) throws IOException {
Runtime.getRuntime().exec(new String[] { "/system/bin/su", "-c", "reboot now" });
}A program müködik, tehát újra indul a telefon viszont mielőtt megtenné hibaüzenetet dob ki.
Nem tudjátok, hogy mitől lehet???
Előre köszönöm a segítségeteket!
-
bgergo93
csendes tag
Sziasztok!
Valaki nem tud véletlenül, egy egyszerű módszert arra, hogy az ébresztő óra eseményére feliratkozzak.
Tehát, amikor megszólal az ébresztő, arra szeretnék feliratkozni, az intent-filterek között nem találtam, de biztos vagyok benne, hogy létezik valami hasonló.
Tasker-ben Alarm-Done event a neve.Vagy pedig manuálisan megkell szereznem az ébresztési időpontokat, és beállítani rá, egy Broadcast eseményt?
-
daniele
aktív tag
Sziasztok.
Nem akadna köztetek olyan ember aki összedobna egy kis appot, vagy esetleg nem tudtok valakit akit fellehet keresni ez ügybe? Privátba leírnám a részleteket egy vállalkozó szellemű embernek.
-
h1ght3chzor
őstag
Sziasztok!
Naptárba szeretnék bejegyzést létrehozni. Lenne pár kérdésem, hogy hogyan is kellene pontosan. Uri mire való, hogyan kellene használnom?
Az alábbi kódot írtam, kérlek ez alapján, ha tudnátok segíteni, nagyon jó lenne!

public void addEvent(int calendar_id, String title, Calendar beginTime, Calendar endTime, String description,String event_timezone) {
ContentResolver contentResolver = getContentResolver();
ContentValues calEvent = new ContentValues();
calEvent.put(CalendarContract.Events.CALENDAR_ID, calendar_id); // XXX pick)
calEvent.put(CalendarContract.Events.TITLE, title);
calEvent.put(CalendarContract.Events.DTSTART, start.getTimeInMillis());
calEvent.put(CalendarContract.Events.DTEND, endTime.getTimeInMillis());
calEvent.put(Events.DESCRIPTION, description);
calEvent.put(CalendarContract.Events.EVENT_TIMEZONE, event_timezone);
Uri uri = contentResolver.insert(CalendarContract.Events.CONTENT_URI, calEvent);
}
Calendar beginTime = Calendar.getInstance();
beginTime.set(2014, 3, 14, 13, 30);
Calendar endTime = Calendar.getInstance();
endTime.set(2014, 3, 14, 13, 30);
addEvent(1, "Teszttitle", beginTime, endTime, "Tesztdescription", "America/Los_Angeles"); -
Yany
addikt
Srácok, kérnék egy kis segítséget. Szeretném felmérni, hogy az alkalmazás, amit készítünk, milyen eszközön indul el rendesen és min nem hajlandó. Megtennétek, hogy ránéztek minél többféle készülékkel?
A cucc ingyenes és az is marad, úgyhogy bátorítok mindenkit a letöltésére. Arra is, hogy a véleményét elmondja akár itt, akár privátban, akár a play store-ban. Minden info és vélemény segít abban, hogy minél hamarabb minél jobb dolgot alkossunk:
[BloomYou]
Előre is nagyon köszi nektek.

-
kemkriszt98
tag
válasz
WonderCSabo
#1852
üzenetére
Nem igazán akar össze jönni.... az a fehér csík csak ott marad...
-
Karma
félisten
válasz
WonderCSabo
#1853
üzenetére
Meg ha megnézed a támogatott országok listáját, ott is látszik.

-
fatal`
titán
válasz
WonderCSabo
#1853
üzenetére
Aha, konzolon értesítés. Belépsz és baloldalon a hirdetmények között hozta.

(#1851) sutszi: Ezekhez nem szokás eseményt bejelenteni, folyamatosan bővül az országok listája, most ért ide.

-
WonderCSabo
félisten
válasz
kemkriszt98
#1847
üzenetére
Hmm, ezek szerint ez nem elég neki. Próbáld ki itt a válaszokat, több is jó. TitleBar már nincs, helyette az ActionBar van API 11 óta.
-
fatal`
titán
Merchant registration available in Hungary You can now register as a Google Play Merchant if you reside in Hungary.

-
kemkriszt98
tag
válasz
WonderCSabo
#1846
üzenetére
Akkor megmondanád hogy melyik a Title Bar?
Amúgy ez a fehér csík maradt helyette:
Ezzel mit lehetne kezdeni? -
WonderCSabo
félisten
válasz
kemkriszt98
#1845
üzenetére
A custom themedhez add hozzá ezt a sort:
<item name="android:windowActionBar">false</item>
Amit te el akarsz tüntetni, az nem a TitleBar, hanem az ActionBar.
-
Karma
félisten
válasz
h1ght3chzor
#1843
üzenetére
Tényleg így van. Próbálkozni is kár.
-
h1ght3chzor
őstag
válasz
WonderCSabo
#1841
üzenetére
Köszönöm, beimportáltam, de mivel sajnos nekem csak emulatorom van, ezért csak ott tudom szimulálni. Esetleg tudtok javasolni beállításokat, amivel el is indulna? Mert jelenleg nem fut, pedig 4.4.2 api 19...
bluetooth binder is null hibaüzenet fogad, meg hogy ami most van virtual device nem jó neki.Vagy ez tényleg így van? The emulator does not support Bluetooth, as mentioned in the SDK's docs and on several other places.

-
Sianis
addikt
válasz
h1ght3chzor
#1837
üzenetére
Ez eléggé hasonlít. Amúgy a samples-ben kellene lennie, amit az SDK Manager letölt.
Sianis
-
WonderCSabo
félisten
válasz
h1ght3chzor
#1839
üzenetére
A BluetoothChat példaprogiról van szó. Itt találod <SDK_HOME>\samples\android-<XX>\legacy. Persze csak akkor, hogy letöltöd az adott API levelhez a samples csomagot.
-
h1ght3chzor
őstag
válasz
h1ght3chzor
#1839
üzenetére
E/BluetoothAdapter(1140): Bluetooth binder is null a pontos hiba, mit kellene csinálnom, hogy le tudjon futni?
-
h1ght3chzor
őstag
válasz
h1ght3chzor
#1837
üzenetére
Letöltöttem, de nem fut sajnos nekem.

-
kemkriszt98
tag
Sziasztok, szeretnék készíteni egy alkalmazás ami kb abból állna, hogy a userek "feltölthetnek" egy szöveget (esetleg regisztrálhatnak) ilyesmi.... (semmi haszna csak tanulás céljából). A baj csak az hogy még soha nem foglalkoztam ilyesmivel... az androidos részét majd csak össze googlizom de a pc-s rész esetében (elvileg ott tárolnám az adatokat) fogalmam sincs, hogy merre induljak, mit keressek..... Minek kellene utána néznem?
-
Sianis
addikt
válasz
Discon00b
#1835
üzenetére
Hali!
Nem nagy kaland, szerintem Bluetooth-szal jobban jársz. Sima soros kommunikáció nem egy nagy feladat rajta, az Android oldalán van egy példa chat alkalmazás, az gyakorlatilag a keresés - párosítás - küldés/fogadás részét teljesen lefedi.
A mikrokontrolleres rész nem ide tartozik, de gondolom azzal jobban állsz.
Sianis
-
Discon00b
újonc
Üdv!
Szakdoga témának egy mikrokontroller és egy android alkalmazás készítését jelöltem meg témának.
Szerencsére van időm megírni mindkét programot, tehát nem hajt a tatár.Maga az android alkalmazás néhány nyomógomból és egy zöld-piros "lámpából" állna.
A feladat maga "fiktív", nem kerül tényleges beépítésre egyik eszköz sem, de természetesen a bizottságnak majd prezentálni kell a történetet.Tehát az alkalmazás felépítése:
- Zöld-piros visszajelző (ez a rész kapna egy jelet a mikrok.-től hogy a szenzor érzékelt valamit. Ez a rész csak adatot kap, nem küld semmit)
- Yes-No funkció gombok (ezek küldenek jelet a mikrok.-nek hogy start vagy stop)
- Mivel ez egy automatizálás feladat, lenne még egy Warning Msg mikor a készülék alapállapotban van, kap a kezelő egy jelzést a készülékre hogy új figyelmeztetés érkezett, hang + rezgés formában.
Mindezek Bluetooth vagy WiFi-n keresztül kommunikálná le, bár még nem tudom hogy melyik az egyszerűbb a portok és a hozzáférés megadásának szempontjából.
Egy szó mint száz. Ha lenne egy önkéntes aki tudna tartani egy gyors talpalást, vagy csak felvázolni hogy ezt hogyan lehet megvalósítani, honorálnám. Igyekszem egyedül megcsinálni természetesen, tudom hogy sokan vinnyognak segítségért, mint most én, de reménykedem

-
Karma
félisten
válasz
h1ght3chzor
#1833
üzenetére
1) Addig szép, hogy Bluetooth, de milyen profil? Mert például más osztályok kellenek a Serial Port Profile-hoz a BluetoothSocket/BluetoothServerSocket osztályok kellenek, és úgy viselkedik, mint egy TCP socket. De van tucatnyi más lehetőség (pár gyakori: PAN, HID, A2DP, OPP). Az egész hóbelebanchoz tartozik egy guide az Android SDK dokumentációjában, ezzel kezdhetnél.
2) Ehhez is csak a dokumentációt kéne olvasnod, íme az event létrehozás mikéntje.
3) Meglepő módon a Service osztály dokumentációja még példát is tartalmaz a magyarázat mellett.
-
h1ght3chzor
őstag
Sziasztok!
Lenne 3 kérdésem.
Hogyan kell:
bluetooth-on keresztül kommunikálni szervizzel?google naptári bejegyzéseket csinálni?
androidon szerviz alkalmazást írni, a programom mellé, mögé?
Köszönöm a válaszokat!

-
thon73
tag
Kedves Adatbázis Guruk!
Csinált már valaki olyat, hogy NEM a beépített szöveges keresésekkel keresett android sqlite adatbázisban? A lehetőségeket (keresésre külön oszlop pl.) olvastam itt-ott a neten, ezt pl ki is próbáltam. De saját tapasztalata (amit esetleg meg is osztana) van valakinek? Ahol esetleg nem kéne duplázni az adatokat.
(((az ANDROID sqlite lényeges, mert C forráskódban láttam erre beépített lehetőséget is, de tudtommal itt nincs)))Ha valaki zsákutcába futott ezzel, és elmondja, annak is örülnék; legalább arra már nem próbálkozom.
Köszönöm!
-
WonderCSabo
félisten
válasz
h1ght3chzor
#1830
üzenetére
Defaultból mindig a View hierarchiában lehető legelső focusble view-ra ugrik a focus.
-
Karma
félisten
válasz
h1ght3chzor
#1828
üzenetére
Nem biztos hogy jó megoldás, de egy próbát megérhet, hogy az onCreate-ben hívd meg a requestFocus metódusát annak az ET-nek, amit szeretnél fókuszálni.
-
Karma
félisten
válasz
h1ght3chzor
#1826
üzenetére
A setEnabled metódust használd inkább.
-
h1ght3chzor
őstag
Én is így gondoltam, de valamiért nem működik. Így csináltam:
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
final Button btnKijelentkezes= (Button) findViewById(R.id.btnKijelentkezes);
btnKijelentkezes.setClickable(false); -
Karma
félisten
válasz
h1ght3chzor
#1824
üzenetére
A gombok létrehozása után azonnal (pl. onCreate(), a setContentView() után) már állíthatod.
-
h1ght3chzor
őstag
Hol kellene pontosan letiltanom a gombokat amiket én definiáltam, hogy a program elindítása után ne lehessen rákattintani?
setOnClickListener-ben ez sikerül is, de csak miután megnyomtam vmilyen gombot. -
-
válasz
kemkriszt98
#1821
üzenetére
Ha kifejezetten facebook kell, akkor a facebook SDK-t kell használnod.
-
kemkriszt98
tag
Sziasztok, ez alapján próbáltam beilleszteni egy Share gombot a programomba, a baj csak az, hogy csak a skype meg a különböző e-mail kliensek jelennek meg mint választási lehetőség, nekem viszont a legjobban a facebook kellene... (persze azért megtartanám a choosert)
-
thon73
tag
válasz
WonderCSabo
#1816
üzenetére
Csak együttérezni tudok.

A Support Fragmenttel én is tapasztaltam anomáliákat 2.3.x és 4-x alatt nem egyformán működött. A másik falba ütközésem a nested megvalósítással történt, így utólag valószínű pont emiatt. (Nem megfelelően állt fel a layout, különösen újraindításnál.) Én feladtam a nested variánst, azóta mindent szigorúan az Activity vezérel (szinte csak erre tartom
)
De elismerésem, hogy ezt így kibogoztad!!!
-
Submarine
senior tag
Sziasztok!
Feltettem virtuális gépre a nemrég kiadott android-x86-4.4-RC1.iso -ról 4.4.2-őt.
Minden szép és jó, csak mivel ez PC, elég vicces láthatatlan egérrel kóricálni rajta.Egyszóval hogy lehet elővarázsolni rajta a kurzort?
A billentyűzetet azt magától ismeri..Azt hiszi magáról hogy tablet. És azt kell mondjam, régi netezős-filmnézős gépekre ez lesz a működő alternatíva, főleg most hogy az xp-nek is leáldozott.
Bocs ha rossz topicba jöttem!
-
WonderCSabo
félisten
Ma hajnali ötig szívtam a support lib miatt. A support Fragmenteket mindenki ismeri. Viszont kiderült a Googlenek egy turpissága, ami teljesen dokumentálatlanul történik support Fragmentek esetében.
Fragment hozzáadása alatt ez történik:
f.mView = f.onCreateView(f.getLayoutInflater(f.mSavedFragmentState),
null, f.mSavedFragmentState);
if (f.mView != null) {
f.mInnerView = f.mView;
f.mView = NoSaveStateFrameLayout.wrap(f.mView);
if (f.mHidden) f.mView.setVisibility(View.GONE);
f.onViewCreated(f.mView, f.mSavedFragmentState);
} else {
f.mInnerView = null;
}A NoSaveStateFrameLayout pedig ez:
class NoSaveStateFrameLayout extends FrameLayout {
static ViewGroup wrap(View child) {
NoSaveStateFrameLayout wrapper = new NoSaveStateFrameLayout(child.getContext());
ViewGroup.LayoutParams childParams = child.getLayoutParams();
if (childParams != null) {
wrapper.setLayoutParams(childParams);
}
NoSaveStateFrameLayout.LayoutParams lp = new NoSaveStateFrameLayout.LayoutParams(
ViewGroup.LayoutParams.FILL_PARENT, ViewGroup.LayoutParams.FILL_PARENT);
child.setLayoutParams(lp);
wrapper.addView(child);
return wrapper;
}
...
}Amint fent látható a Google azt a turpisságot követi el, hogy miután az onCreateView lefut, a Fragmentet egy új FrameLayout-ba wrappeli szépen... Ez a FrameLayout pedig jól szétcseszi a View hiearcihámat, különösen nested Fragmentek esetén. Egyébként csomó idő is volt rájönni erre... Az is totál inkorrekt, hogy elvileg az onViewCreated első paraméterének az a specifikációja, hogy az a View, amit az onCreateView csinált - na itt ez se fog érvényesülni, hiszen a wrapper FrameLayout lesz az onViewCreated első paramétere.
Remélem időt spóroltam Nektek ezzel, hátha Ti is belefuttok ilyesmibe.
-
thon73
tag
válasz
WonderCSabo
#1814
üzenetére
Nem is rajzolnak a fragmentek, csak különböző paramézersorokat kérnek be, amiből összeáll a végén egy rajz. De azt nem is látom, csak a végére gyártja le, és mutatja meg az egyik fragment. De ez nem lényeges.
Az onResumeFragments azért kell, mert az onResume részig még nem álltak össze a Fragmentek, már amit a rendszer állít vissza.
Pont ez teszi nehézzé, hogy nincs olyan pont, ami még biztosan le[ut, de a Fragmentek már üzemkészek. Viazont kezdem átlátni, hogy két irányt kell elkészíteni. Az első elkészítéskor az onActivityCreate érheti el a másik Fragmentet ˙Activityn át), később viszont ekkor még nem látja az Activity a másik Fragmentet, tehát nekem kell explicite az OnResumeFragmentsben meghívnom egy adatokat beállító külön fragment metódust.
Ez a megoldás nem túl szép, szerintem a staticus mező tisztább! Köszi a segítséget, a beszélgetés nélkül még törtem volna rajta a fejem egy darabig. -
WonderCSabo
félisten
Nem akarok kikerülő választ adni, de sztem egy bonyolult rajz Fragmentekből való összeállítása egyáltalán nem jó ötlet. A Fragmenteket nem erre találták ki.
A konkrét kérdésedet most hirtelen nem látom át, az onResumeFragments metódust nem használtam sosem, sőt bevallom derekasan picit az egész configuration change kiesett a gyakorlatból, mert a mostani hosszú prokejtemben az egész app álló képes...
-
thon73
tag
válasz
WonderCSabo
#1812
üzenetére
Az, hogy lényeges különbség van a retained Fragment ELSŐ LÉTREHOZÁSA, és az összes többi VISSZAÁLLÍTÁS között.
Vagyis:
A Fragmentet először az Activity.onResumeFragments részben fogom megtalálni. Ha nincs meg, akkor itt kell először is létrehozni.
Ha nem volt meg, akkor a létrehozás után még semmilyen élitciklus nem fut le (majd csak az onResumeFragments UTÁN)
Ha viszont megvolt, akkor eddigre minden lefutott, beleértve a Fragment.onResume metódusát is.A konkrét próbálkozásban egy ListFragmentet készítettem, amelyik az adatait ebből a megőrzött globális adatállományból veszi (a végső megoldás mindig egy kicsit összetettebb persze). Ez azt jelenti, hogy valahol meg kell mondjam az adapternek, hogy hol vannak az adatai.
Az első létrehozáskor (persze ilyenkor az adatállomány még üres, de majdan ide fog bekerülni) nem lesz gond, hiszen mire a ListFragment életciklus részei lefutotnak, ott van az Activityből elérhető módon a másik, adatokat tartalmazó Fragment.
Minden további indításkor azonban mindkét Fragment végigfut az onResume-ig, mielőtt én egyáltalán látnám az adatokat tartalmazó Fragmentet az Activity.onResumeFragments részében! Vagyis nekem kellene kiadni egy pl. MyListFragment.onVariableReady() utasítást, ami betölti az adapterbe az immáron elérhető adatokat.
Ez a megoldás viszont az első indításkor nem lesz jó, hiszen még adapter sincs sehol!
Hozzáteszem: ez a ListFragment dolog valójában csak egy próba. Nekem egy sok részletből álló rajzot kellene elkészítenem, aminek az egyes részeit tudom egy-egy Fragmenttel megalkotni. Az alapadatokat természetesen mentem, de minden apró számítást nem akartam. Ettől a speciális problémától elvonatkoztatva a kérdés általános érvényű: hová tegyem a Fragment megőrzendő adatait, ha magát a konkrét Fragmentet nem akarom megőrizni ((mert pl. változik a gép fordításával))?
A static field egyébként jó ötlet, csak úgy emlékszem, valamiért (újra el kellene olvasni) kerülendőnek javasolta a hivatalos doksi. De ezt elő kéne ásni, lehet, hogy rosszul emlékszem...
((Bocs, ha kicsit bonyolult, már játszom vele egy ideje. Szívesen küldök kódot, de a sallangok, és próbálkozások miatt előbb ki kellene fésülnöm. Bár kivételesen a szöveg talán többet mond.))
-
thon73
tag
válasz
WonderCSabo
#1810
üzenetére
Miért ajánlgatja a doksi a retained Fragmentet, ha ilyen nehéz megoldani az elérését másik Fragmentből!?
A static field-es osztályt hogyan mentem meg biztonságosan? Átviszem az onSaveInstanceState-ben?
Menteni nem akartam, akár nagy is lehet a mérete. Ezek csak olyan "melléktermék" adatok, amik megkönnyítik, hogy nem kell mindent újraszámolni, ha egy másik Fragment nyílik meg, vagy ha újraindul az Activity. De a static field szimpatikus. Az végső soron az Activity-hez kapcsolható, semmi dolga a Fragmentekkel. Így csak az Activity-ig kell "visszanyúlnom" az adatokért.
-
thon73
tag
Egyszerűsítem a kérdést:
Hová tegyem azokat az (akár nagyméretű) globális adatokat, amiket több fragmentből el akarok érni, de szeretném megtartani őket a konfigurációs változások alatt is?
((Egy ötletem van: Application szintre. Megpróbáltam a retained fragmentet, de sehogyse megy.)) -
bAtt001
addikt
válasz
WonderCSabo
#1805
üzenetére
végük csak tablelayout maradt hogy az jó, valahogy elbeszéltünk egymás mellett emailben vagy nemtom

-
thon73
tag
Néhány globális változót egy "retained fragment"-be helyeztem. Létezik olyan pont, amikortól a többi fragment (természetesen az activity-n keresztül) elérheti ezeket a változókat?
Uis. a változók csak az activity onResumeFragments részére térnek vissza (itt tudom újra megtalálni a megtartott fragmentjüket). Ugyanakkor eddigre az összes többi, nem megtartott Fragment is feláll, és az Fragmentek onResume része is lefut.
Van még valamilyen pont az onResume UTÁN, ahol MÁR tudnék kommunikálni a többi fragmenttel (konkrétan a megtartottal), de MÉG nem indult el a Fragment a felhasználó szempontjából?
Előre is köszönöm!
((Átmenetileg úgy oldottam meg, hogy az Activty "értesíti" a Fragmenteket, hogy a változók rendelkezésre állnak. De nem hiszem el, hogy ez lenne a real android way...)) -
bAtt001
addikt
-
bAtt001
addikt
válasz
WonderCSabo
#1800
üzenetére
akkor csak layoutos megoldás van erre, nincs kifejezetten olyan h table mint a textview vagy hasonló igaz? tablelayouttal próbálkoztam de konzulensem azt mondta az nem az igazi erre a célra
hát mi lehet jobb táblázathoz mint a táblázatlayout 
-
Karma
félisten
válasz
XperiaP
#1798
üzenetére
Végülis ja, ez inkább valami megjelenítési dolognak tűnik, ahogy megfagy... Van valami TextWatcher ezen az EditTexten? A mérete, különösen a szélessége fix?
WonderCsabo: Használtad már a GridLayoutot? Nekem elég rossz tapasztalataim vannak vele élesben, pedig nagyon kéne egy ilyen jellegű layout...
Új hozzászólás Aktív témák
- Samsung Galaxy S25 - végre van kicsi!
- Magga: PLEX: multimédia az egész lakásban
- Milyen alaplapot vegyek?
- Fotók, videók mobillal
- Melyik tápegységet vegyem?
- Samsung Galaxy S23 Ultra - non plus ultra
- Torrent meghívó kunyeráló
- PlayStation 5
- Milyen asztali (teljes vagy fél-) gépet vegyek?
- ZIDOO médialejátszók
- További aktív témák...
- 159 - Lenovo LOQ (15APH8) - AMD Ryzen 7 7840HS, RTX 4060 (ELKELT)
- GYÖNYÖRŰ iPhone 12 mini 128GB Blue-1 ÉV GARANCIA - Kártyafüggetlen, MS3415 94% Akkumulátor
- HIBÁTLAN APPLE WATCH ULTRA 2 NATURAL TITANIUM 49MM -1 ÉV GARANCIA - MS3713, 100% AKKUMULÁTOR
- GYÖNYÖRŰ iPhone 13 Pro 256GB Graphite -1 ÉV GARANCIA - Kártyafüggetlen, MS3074
- ÁRGARANCIA!Épített KomPhone i7 14700KF 32/64GB RAM RTX 5070 Ti 16GB GAMER PC termékbeszámítással
Állásajánlatok
Cég: Laptopszaki Kft.
Város: Budapest
Cég: PCMENTOR SZERVIZ KFT.
Város: Budapest



)

Köszönöm azért!





