- Android alkalmazások - szoftver kibeszélő topik
- Milyen okostelefont vegyek?
- Vodafone mobilszolgáltatások
- A Honor és a Huawei uralja a kínai mobilpiacot
- Garmin Forerunner 255 Music - nem csak futóknak
- Yettel topik
- Motorola Moto G24 Power - hol van az erő?
- Google Pixel 8 Pro - mestersége(s) az intelligencia
- Ezek a OnePlus 12 és 12R európai árai
- Google Pixel 6/7/8 topik
Hirdetés
-
Premier előzetesen a Wrath: Aeon of Ruin konzolos változatai
gp A PC-s változat után a minap PlayStationre, Xbox-ra és Switch-re is elérhető lett a program.
-
A személyre szabott reklám lehet a streaming következő slágere
it A jobb célzott hirdetések érdekében adatplatformot indít a Warner Bros Discovery.
-
AMD Radeon undervolt/overclock
lo Minden egy hideg, téli estén kezdődött, mikor rájöttem, hogy már kicsit kevés az RTX2060...
Új hozzászólás Aktív témák
-
Sianis
addikt
Szerintem, menjünk át ide, ne offoljunk.
Sianis
-
pigster
senior tag
Azt hogyan lehet megcsinálni, hogy sqlite használatával a rendezés magyar ékezethelyes legyen? Tehát az "Á"-val kezdődő dolgok ne a lista végér kerüljenek, hanem az "A" után?
Cursor android.database.sqlite.SQLiteDatabase.query(
String table,
String[] columns,
String selection,
String[] selectionArgs,
String groupBy,
String having,
String orderBy)Így csinálnám, működik is szépen, de hol tudom beállítani, hogy magyar abc alapján rendezzen?
[ Szerkesztve ]
FIGYELEM! A többszázezres Samsung okostévék kéretlen reklámokat tolnak az arcodba.
-
Sianis
addikt
válasz WonderCSabo #603 üzenetére
Nem kell az ActionBarSherlock miatt plusz libet belehúzni. Illetve még ott van a Holo Everywhere. Valamint van egy olyan titkos vágyam, hogy megnézem, csak 4.0 felé lőtt appnak van-e esélye elterjedni.
Sianis
-
fatal`
titán
A legtöbben biztos láttátok / próbáltátok már, de azért leírom, hátha van valaki, aki nem vette észre:
Érdemes letölteni az SDK Managerben az Intel x86 Emulator Accelerator (HAXM) extrát és az emulátornál x86 imaget használni, mert így értelmes tempója lesz az emulátornak (gpu emulációval játékfejlesztésre is alkalmas végre, bár elvagyok a BlueStacks-szel). Intel VT-x képes cpu (és gondolom chipset) és biosban bekapcsolt VT kell hozzá.
Most már csak az eclipseből fordított apk átviteli tempójára kéne valamit kitaláljanak, mert az még mindig baromi lassú.
[ Szerkesztve ]
-
fatal`
titán
válasz SektorFlop #611 üzenetére
Ehhez nem kell Vbox, a gyári emulátor fut vt-vel és gyors. A VirtualBoxos verzióból 2.2 volt a legújabb, amikor néztem és elég körülményes használni, akkor már inkább a bluestacks.
Ja és az a 2.2-es verzió szintén nem emulált opengl-es 2.0-t, így én nem mentem vele semmire. Normál appok fejlesztéséhez persze jó lehet (és közben valószínűleg van már újabb verzió is).
-
Karma
félisten
Ezt a leírást most találtam, kevés fájdalommal lehet egy gépen Hyper-V és HAXM is, noha nem is egy időben Főleg hasznos, mert VMware-t is szeretnék néha használni.
“All nothings are not equal.”
-
fatal`
titán
Valaki nem tudja, hogy hogy lehet lekérni, hogy az adott eszköz, amin fut a program milyen képernyő-tájolásokat támogat? (álló-fekvő)
Konkrétan az a gondom, hogy a programom csak állót támogat, fekvőn indítva széthúzza a képet, ezt szeretném elkerülni (fekete csíkot fogok rakni), de csak akkor, ha nincs álló mód eszközön.
Próbáltam googleval keresgélni, de nem találtam csak olyan bejegyzéseket, ami a jelenlegi állapotot kéri le.
Most állóra van korlátozva a program, arra gondoltam, hogyha a képméret még mindig szélesebb, mint magasabb, akkor valójában fekvő. Viszont nem tudom, hogy ez nem okozna-e problémát egy tableten, ráadásul ezt tesztelni sem tudom, eszköz hiányában.
[ Szerkesztve ]
-
fatal`
titán
Ugyanide tartozó kérdés, mert volt egy kis kavarodás a manifestemben, ha én android:screenOrientation="sensorPortrait" -ot használok, akkor mi történik egy Froyo eszközön? Ez a paraméter API Level9-nél lett bevezetve.
-
Sianis
addikt
Én arra tippelnék, hogy unspecified fallback fog történni. Nem tudja értelmezni az értéket, ezért az alapértelmezettet fogja használni. Egyéb XML paramétereknél is ez szokott lenni, hogy ami az új API-ban jött be, de a régi nem érti, akkor választ egy alapértelmezettet. Talán a match_parent - fill_parent páros ilyen. A match_parent-es layoutok is működnek API 7-en.
Sianis
-
pigster
senior tag
Ha a készüléket elforgatom, akkor az Aktivity meghívásakor átadott Intent, meg az átadott extra is megy a levesbe, vagy pedig az Intentek "túlélik" az elforgatást, és azután is használhatók?
Illetve erre tud valaki esetleg megoldást?
[ Szerkesztve ]
FIGYELEM! A többszázezres Samsung okostévék kéretlen reklámokat tolnak az arcodba.
-
pittbaba
aktív tag
Sziasztok!
Szeretnék egy ajtónyitót csinálni az egyik kihasznált Androidos telómból. A programozás résznél egyelőre nem tartok, de ahogy néztem, eléggé könnyen megoldható, viszont az elektronikai résszel bajban vagyok. Találtam több netről rendelhető usb-s relay boardokat, de attól félek, arra rádugom a telefonomat, és nem fog töltődni USB-n keresztül, ami kellemetlen. Az usb kábel szétbarmolásával meg lehetne oldani a tápellátást, de inkább titeket kérdeznélek meg előbb, van e valamilyen bevált kütyü erre, ami esetleg tölti is a telefont USB-n keresztül miközben rajta lóg?
PH Konfigom: Gigabyte GA-H97M-D3H, i7 4790K,GTX 960, Seasonic SS-620GM
-
Karma
félisten
válasz pittbaba #622 üzenetére
Nem vagyok nagy guruja a témának, de a Google kitalálta az ilyen felhasználáshoz az ADK-t, és vannak fain kulcsrakész lapok az ilyen hobbifejlesztéshez.
“All nothings are not equal.”
-
BigBlackDog
veterán
Sziasztok!
Kis segítséget szeretnék kérni. Google Play Szolgáltatásokat szeretném telepíteni, mivel az egyik alkalmazáshoz kellene (SupportMapFragment-ből származtatott saját osztályhoz). Playből sikeresen le is töltődik, de telepítésnél kapok egy hibaüzenetet; "Összeegyeztethetetlen más, ugyanazon megosztott felhasználói azonosítót használó alkamazással/alkalmazásokkal". Próbáltam más eszközről áthúzni az apk-t, majd berakni a system/app mappába (jogosulságokat beállítottam), de semmi nem történt. adb installal telepítve [INSTALL_FAILED_SHARED_USER_INCOMPATIBLE] hibát kapok.
Egy Sony Ericsson WT19i készüléken próbálkozok, amin RealICS r6 van telepítve, ha esetleg lényeges lenne. Mit kéne csinálnom, hogy tudjam telepíteni, használni? Előre is köszönöm. -
shinodas
tag
Sziasztok srácok!
Van egy látszólag jó példa kódom, aminek elvileg kellene is futni, de minden alkalommal, ha a telefonon kipróbálom FC-t dob. Nem igazán van még tapasztalatom androiddal, ezért kérdezlek titeket, hogy mi lehet a gond? -
shinodas
tag
Helyesbítenék: Debug módban egy ideig fut jól, de ha rendesen elindítom az appot, marad az FC.
A console ezt írja:
[2013-05-05 14:20:32 - Surface2] ------------------------------
[2013-05-05 14:20:32 - Surface2] Android Launch!
[2013-05-05 14:20:32 - Surface2] adb is running normally.
[2013-05-05 14:20:32 - Surface2] Performing com.example.surface2.MainActivity activity launch
[2013-05-05 14:20:32 - Surface2] Automatic Target Mode: Unable to detect device compatibility. Please select a target device.
[2013-05-05 14:20:35 - Surface2] Application already deployed. No need to reinstall.
[2013-05-05 14:20:35 - Surface2] Starting activity com.example.surface2.MainActivity on device skate
[2013-05-05 14:20:36 - Surface2] ActivityManager: Starting: Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] cmp=com.example.surface2/.MainActivity }
[2013-05-05 14:20:36 - Surface2] ActivityManager: Warning: Activity not started, its current task has been brought to the frontA logCat ezt:
05-05 14:23:52.830: W/ActivityManager(227): Activity destroy timeout for HistoryRecord{409006b8 com.example.surface2/.MainActivity}
05-05 14:23:52.870: D/AndroidRuntime(8898): >>>>>> AndroidRuntime START com.android.internal.os.RuntimeInit <<<<<<
05-05 14:23:52.870: I/AndroidRuntime(8898): Heap size: -Xmx48m
05-05 14:23:52.870: D/AndroidRuntime(8898): CheckJNI is OFF
05-05 14:23:53.130: D/AndroidRuntime(8898): Calling main entry com.android.commands.pm.Pm
05-05 14:23:53.140: D/AndroidRuntime(8898): Shutting down VM
05-05 14:23:53.150: D/dalvikvm(8898): GC_CONCURRENT freed 103K, 70% free 308K/1024K, external 0K/0K, paused 1ms+1ms
05-05 14:23:53.150: I/AndroidRuntime(8898): NOTE: attach of thread 'Binder Thread #3' failed
05-05 14:23:53.150: D/jdwp(8898): adbd disconnected
05-05 14:23:53.150: D/jdwp(8898): Got wake-up signal, bailing out of select
05-05 14:23:53.150: D/dalvikvm(8898): Debugger has detached; object registry had 1 entries
05-05 14:23:53.360: D/AndroidRuntime(8908): >>>>>> AndroidRuntime START com.android.internal.os.RuntimeInit <<<<<<
05-05 14:23:53.360: I/AndroidRuntime(8908): Heap size: -Xmx48m
05-05 14:23:53.360: D/AndroidRuntime(8908): CheckJNI is OFF
05-05 14:23:53.620: D/AndroidRuntime(8908): Calling main entry com.android.commands.am.Am
05-05 14:23:53.630: I/ActivityManager(227): Starting: Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10000000 cmp=com.example.surface2/.MainActivity } from pid 8908
05-05 14:23:53.670: D/AndroidRuntime(8908): Shutting down VM
05-05 14:23:53.690: I/AndroidRuntime(8908): NOTE: attach of thread 'Binder Thread #3' failed
05-05 14:23:53.690: D/dalvikvm(8908): GC_CONCURRENT freed 103K, 69% free 325K/1024K, external 0K/0K, paused 0ms+1ms
05-05 14:23:53.700: D/jdwp(8908): adbd disconnected
05-05 14:23:53.700: D/jdwp(8908): Got wake-up signal, bailing out of select
05-05 14:23:53.700: D/dalvikvm(8908): Debugger has detached; object registry had 1 entries
05-05 14:23:53.700: W/WindowManager(227): Rebuild removed 5 windows but added 3
05-05 14:23:53.780: D/dalvikvm(7054): GC_EXPLICIT freed 21K, 50% free 2701K/5379K, external 0K/0K, paused 432ms
05-05 14:23:58.320: I/Process(8882): Sending signal. PID: 8882 SIG: 9
05-05 14:23:58.330: E/InputDispatcher(227): channel '40a14228 com.example.surface2/com.example.surface2.MainActivity (server)' ~ Consumer closed input channel or an error occurred. events=0x8
05-05 14:23:58.330: E/InputDispatcher(227): channel '40a14228 com.example.surface2/com.example.surface2.MainActivity (server)' ~ Channel is unrecoverably broken and will be disposed!
05-05 14:23:58.330: I/ActivityManager(227): Process com.example.surface2 (pid 8882) has died.
05-05 14:23:58.350: I/WindowManager(227): WIN DEATH: Window{40a14228 com.example.surface2/com.example.surface2.MainActivity paused=false}
05-05 14:23:58.350: I/WindowManager(227): WIN DEATH: Window{4099a168 SurfaceView paused=false}
05-05 14:23:58.390: W/InputManagerService(227): Window already focused, ignoring focus gain of: com.android.internal.view.IInputMethodClient$Stub$Proxy@405ab318 -
shinodas
tag
Illetve azt megtudnátok mondani, hogy Surfaceview-ra hogyan lehet egy textViewt aplákálni?
-
thon73
tag
Elkezdtem haladni a korral, megismerkedtem a Fragment-kezeléssel.
DE!
Az normális, hogy az Android Developers honlapon lévő példakódok hibásak??
Namármost, ahogy végiggondoltam, úgy viszont működik (és a hibás elgondolást is megtaláltam a példakódban).
Van viszont erről (Fragment) valahol használható leírás, hogy mi a helyes felhasználás módja, vagy mindenki kitalálja magának oszt lesz ami lesz??
Vagy mi van ilyenkor, amikor a "HIVATALOS" dokumentáció hülyeséggel példálózik? -
thon73
tag
A mérgelődésen kívül két konkrét kérdésem lenne Fragment-ekkel kapcsolatban:
1. A Fragment által létrehozott Options-Menu a Fragment eltávolítása után is megmarad. Ha új Fragment példányt csatolok be, akkor az előző (eltávolított) példány Options-menu-je is, és az új is látszik. Ezt (a régi menüt) mivel tudom kitörölni a Fragment eltávolításakor? (Az előző Fragment már "eltűnt", vagy legalábbis tag keresésével nem találja meg. De a menu maradt.)
Az invalidateOptionsMenu nem működik, vagy nem tudom, hol kellene kiadni. A menu.clear() (pl. a prepare részben) viszont mindent kitöröl, és egyáltalán nem látszik a menü.2. Ha elmentettem egy transaction-t a backstack-re, és nem arrafelé megyek vissza (mert pl. elfordítottam a telo-t), akkor hogyan tudom azt onnan eltüntetni? ((A BackStack-on lévő elemek száma minden elfordításkor növekszik, hiába lesz közben "Destroy". Ez nem is lenne baj, csak a visszafordításkor az alap Fragment-ről szeretnék indulni, miközben a "második" Fragment (vagyis a tranzakció) el van mentve a BackStack-re.))
API17-tel fordítottam, de API8 minimumra, tehát support package-t használtam. Elvileg ez nem lehetne baj. Előre is köszönöm, ha valakinek van ezzel tapasztalata.
-
Sianis
addikt
Fragmentnél adtál meg setHasOptionsMenu(true)-t? Vagy honnan vezérled a menü létrehozását? Nekem így eddig nem volt vele gondom, minden fragment magának definiálja a menüjét és a backstackes dolgokkal is szépen együttműködik a cserélődés. Igaz én AndroidAnnotations-t használok.
Sianis
-
kocska86
csendes tag
Sziasztok!
Előre leszögezném, hogy kezdő vagyok az android programozás terén...
A telómhoz szeretnék csinál egy usb háttértár programot. A programom már az alap funkcióját ellátja.Viszont, ha PC-re csatlakoztatom, és valamit írok, vagy valamit törlök az SD kártyáról, akkor az a telefonra való visszacsatolás után nem látszik.
Ha látni akarom az SD kártya tartalmának a változását, akkor újra kell indítanom a telefon.
A kérdés tehát az lenne...hogy milyen módon tudnám az SD kártya teljes tartalmát újra olvastatni?
Próbálkoztam a MediaScannerConnectionClient-el, de sikertelenül.
A kátrya tartalmát ugyan beolvassa, de változásokat nem nem jeleníti meg, vagy nem is észleli.
Gondolom valami hasonló metódus kellene, mint ami bootoláskor lefut, de mivel nem tudom, hogy pontosan mi is az, ezért nem tudtam elindulni ezen a vonalon.
Örülnék, ha valaki tudna útmutatást adni!Előre is köszönöm!
-
thon73
tag
Igen, a menü létrehozása tökéletesen megy. A menüt a fragmenten belül hoztam létre, és szeretném is, ha ott maradhatna. A gond akkor kezdődik, ha egy fragment osztály több példánnyal kapcsolódik be, mert akkor minden példány hozzáadja a saját menüjét. Ez idáig logikus is, de ha remove v. replece-szel elveszem a fragment-példányt (és persze a back-stack-ben sincs), a menüje akkor is megmarad. És - noha nincs már hivatkozás elvileg sehol erre a példányra - a menü az activity újraindítása után is megmarad! Minden indításnál új fragment-példányt adtam egy FrameLayout-ba (az előzőt elvileg eldobtam) és több száz bejegyzésem lett a menüben!
Tudom, vissza lehet szerezni a Fragmentet, a gond csak az, hogy ha egyszer valahova becsatoltam, ugyanazt a példányt (külön időpontban sem!) nem lehet másik Layout-ba becsatolni. Ezért kellene két példány egy fragmentből (külön elrendezésben tehát külön időben) de EGY menüvel egyszerre.
Egyetlen ötletem van: az activity onprepareoptionsmenu-jében ellenőrizni, hogy adott taggal van-e élő fragment, és eszerint betenni a menüt. De ha lehet, a fragmenten BELÜL szeretném a menükérdést megoldani. Csak nem megy…A BackStack kérdés egyszerűbb: az nekem is prímán működik. De ha nincs szükségem az utolsó elmentett transaction példányra, azt hogy tudom "visszajátszás" nélkül eldobni? Vagyis csak levenni a stackról, de nem végrehajtani.
Köszönöm!
-
shinodas
tag
Multi touch-al próbálkozok, és az lenne a kérdésem, hogyan tudnám egyszerre mozgatni a két kört? Mert csak az egyik elem követi az ujjam, a másik pedig a mozgatott objektumot követi, ha a másik ujjammal is megérintem a képernyőt.
[ Szerkesztve ]
-
thon73
tag
válasz shinodas #636 üzenetére
Pl. így? Az ID-t is kiírja.
private final int MAX_POINTER=10;
private float[] posx=new float[MAX_POINTER];
private float[] posy=new float[MAX_POINTER];
private int[] id=new int[MAX_POINTER];
private int pointerCount = 0;
@Override
public boolean onTouchEvent(MotionEvent event)
{
switch (event.getActionMasked())
{
case MotionEvent.ACTION_DOWN:
case MotionEvent.ACTION_MOVE:
pointerCount = event.getPointerCount();
for (int cnt = 0; cnt < pointerCount && cnt <MAX_POINTER; cnt++)
{
posx[cnt] = event.getX(cnt);
posy[cnt] = event.getY(cnt);
id[cnt] = event.getPointerId(cnt);
}
this.invalidate();
break;
}
return true;
}
@Override
protected void onDraw(Canvas canvas)
{
for (int cnt = 0; cnt < pointerCount; cnt++)
{
canvas.drawText(Integer.toString(cnt) + ", [" + Integer.toString(id[cnt]) + "]", posx[cnt], posy[cnt]-80f, text);
canvas.drawCircle (posx[cnt], posy[cnt], 30f, paint);
}
}
}
}Nem vagyok benne biztos, hogy a getAction() action_POINTER_up kódot is visszaad. Ahhoz sztem. getActionMasked() lekérdezés kellene. De lehet, h. rosszul tudom. A fenti megoldás viszont akár tíz ujjal is működik. (Már ha a hardver tudja...)
[ Szerkesztve ]
-
thon73
tag
-
thon73
tag
Amíg a válaszokra vártam, tovább nyomoztam:
Úgy tűnik, ha egyszer egy Fragment példányt létrehoztunk, akkor az örökkön-örökké létezni fog a FragmentManager-ben - pontosabban addíg, amíg a program VÉGLEG be nem fejeződik (tehát nem konfig vált. miatt.) Ez meglehetősen furcsa működés, mert akkor mire szolgál a setRetainInstance?
Érdekes, jobban elolvasva a doksi is ezt mondja: a detach hasonló ahhoz, mintha a BackStack-en lenne a fragment, csak ilyenkor a FragmentManager tárolja.
Support package-ot használok API8 minimum mellett API17-tel fordítva.
Meg tudná ezt valaki erősíteni v. cáfolni? Lehet, h. ez egy hiba? Vagy a supporttal van valami gond? -
Sianis
addikt
Sajnos, most nem tudok nagyon beleásni a témába, de annyit had tegyek hozzá, hogy nem hiszem, hogy a supportban más lenne, mint az új rendszerekben. A support tudtommal ugyanazt a kódot tartalmazza, mint ami a 4.0+ rendszerek megkaptak. Gyakorlatilag egy backport, annyi különbséggel szerintem, hogy SDK számtól függően vagy a support osztályokra, vagy a rendszer osztályaira hivatkozik.
MOD: Valami kódot nem akarsz esetleg feltölteni? Nem kell bele semmi extra logika, csak lehet, hogy rátekintve jobban kibukik a baki.
Sianis
[ Szerkesztve ]
-
Konair
csendes tag
Sziasztok!
Van egy BroadcastReceiver-em, és abban az onReceive elindít egy AsyncTask-ot. doInBackground-ban pedig lekérem a GPS koordinátákat.
Ám itt kapok egy java.lang.NullPointerException-t a 46. sorban, ahol ez szerepel:
locationManager = (LocationManager) mContext.getSystemService(Context.LOCATION_SERVICE);Ez a lekérés működött addig, míg be nem raktam AsyncTask-ba, így arra tippelek, hogy a context-et nem adom át helyesen.
Hogyan kellene ezt jól átadni?
Valaki tudna egy rendes leírást mutatni a contextről?Weboldal készítés felsőfokon...
-
Sianis
addikt
Eclipseben tegyél oda egy breakpointot és nézd meg debug mode-ban. Meg fog ott állni a futás és meg tudod nézni, hogy tényleg null-e a context.
Vagy a task konstruktorának adnám át a contextet és menteném a taskon belül is vagy az executeon keresztül a doinbackgroundnak.
Sianis
-
thon73
tag
Bocs, csak úgy értettem, hogy volt-e már valakinek ehhez hasonló tapasztalata. Neki is láttam egy egyszerűsített tesztkódot írni (az enyém meglehetősen hosszú).
Ez a teszt fragment, egyetlen metódus:public class TestFragment extends Fragment
{
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
{
TextView tv = new TextView(getActivity());
tv.setText("Hello világ!");
return tv;
}
}És a lényeg: az activity:
public class MainActivity extends FragmentActivity
{
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
FrameLayout fl = new FrameLayout(this );
fl.setId(1234);
setContentView(fl);
}
@Override
public void onResumeFragments()
{
super.onResumeFragments();
FragmentManager fragmentManager = getSupportFragmentManager();
TestFragment test = (TestFragment)fragmentManager.findFragmentByTag("TEST");
if (test == null)
{
test = new TestFragment();
}
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
fragmentTransaction.add(1234, test, "TEST");
fragmentTransaction.commit();
}
@Override
public void onPause()
{
super.onPause();
FragmentManager fragmentManager = getSupportFragmentManager();
TestFragment test = (TestFragment)fragmentManager.findFragmentByTag("TEST");
if (test!=null)
{
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
// fragmentTransaction.detach(test);
fragmentTransaction.remove(test);
fragmentTransaction.commit();
}
}
}((Igazából ezeken a kódokon kívül az eclipse saját indítókódján semmit sem kell változtatni, mert a View-k dinamikusan jönnek létre. A rengeteg Log-ot kitöröltem, de akár minden metódus figyelhető a LogCat-ben.))
A LÉNYEG:
Sztem. az indítás során az onResumeFragments-ben hozzáadjuk a "TEST" fragmentet,
leállításnál az onPause-ben eldobjuk. (Ha akarjuk, akkor detach is lehet.)A REMOVE UTÁN SZERINTEM A FRAGMENTNEK EL KELLENE PUSZTULNIA A DESTROY FOLYAMÁN!
Ehhez képest újraindítás után hibaüzenet:
java.lang.RuntimeException: Unable to resume activity {.fragmenttest.MainActivity}: java.lang.IllegalStateException: Fragment already added: TestFragment{40525cf0 #0 id=0x4d2 TEST}Vagyis az eldobott Fragmentünk "visszajött".
Ugyanez történik ID és Tag alapú keresésnél is: az eldobott Fragment megjelenik
Ha két (landscape és portrait) layout között váltogatok, akkor még hibaüzenet sem jön, csak a Fragmentek sokasodnak.
((Világos, ha a remove átkerül a legelejére, akkor nem lesz hiba, de a Fragment megmarad))SZERINTEM:
A Fragment-ek NEM objektumként működnek, hanem sokkal jobban hasonlítanak az Activity-ra. Vagyis: létrehozás után (ez történik objektumok módjára), mindvégig megmaradnak, csak ide-oda kapcsolgathatjuk őket.
Az onRetain...-nál annyi különbség lehet, hogy ott érinetetlenül maradnak meg, itt meg a View újra készül.Ez azért gond, mert ha egyszer egy Fragmentet valamelyik View-ba bekapcsoltunk, akkor ragaszkodik a saját View-jához, más View ID esetén hibát dob.
Képzeljünk el egy szituációt: bal oldalon a lista, jobbra az egyes elemek, külön fragmentben. Ha ezt EGY activityvel oldjuk meg, akkor NÉGY fragmentet kell kezelnünk (2 landscape, 2 külön portrait módban) VAGY ha ugyanazt az Id-t adjuk meg a két külön layout-ban lévő fragmentet fogadó View-nak, akkor csak KÉT fragmentet kell kezelnünk.
Tudom, hogy a KÉT ACTIVITY-vel való kezelést preferálják, de 1. ettől nem tudom meg, miért nem tűnnek el a fragmentek. ((2. Az activity-k közötti kommunikáció miatt ez a megoldás most nem az igazi nekem (de ez a teszt szempontjából lényegtelen))Bocs, ha nem teljesen érthető ez, igyekeztem nagyon rövidíteni a kódot. De már csak azért is hajt a kíváncsiság, hogy ez miként műxik.
-
thon73
tag
válasz shinodas #643 üzenetére
Két fontos dologra érdemes figyelni:
1. az onDraw minden invalidate után üres lappal indul. Ha meg akarod tartani az alakzatokat, akkor tárolni kell a koordinátáikat, és mindenannyiszor újrarajzolni őket. A gond az alakzatok "újra megfogásakor" jelentkezik: uis. honnét tudod, hogy egy már letett alakzatot kell mozgatnod, vagy egy újat? Legjobb lenne talán ellenőrizni, hogy az érintés vmelyik alakzat közelében van-e, és akkor azt hozzárendelni. De mindenképpen tárolni kell az adatokat.
2. nem az index számít, hanem az ID. Ez utóbbi ugyanis nem változik egy multitouch érintés során. Csak éppen nem sorban van, hanem végig kell nézni az indexeket és úgy kikeresni.
((És akkor még ott van a "historical" pontok sokasága, amivel nem foglalkoztunk.)) -
-
shinodas
tag
válasz shinodas #648 üzenetére
Az általad mutatott példában, mikor van a ciklus, ott hogyan tudom elkülöníteni a két pointerem értékét?
case MotionEvent.ACTION_MOVE:
pointerCount = event.getPointerCount();
for(cnt = 0; cnt<pointerCount && cnt<MAX_POINTER;cnt++)
{
posx[cnt] = event.getX(cnt);
posy[cnt] = event.getY(cnt);
id[cnt] = event.getPointerId(cnt);
mPosX = posx[cnt];
mPosY = posy[cnt];
}
this.invalidate();
break;Itt szeretnék mPosX2, és mPosY2-nek is értéket adni, de nem tudom, azt a pointert, hogyan kezeljem le.
[ Szerkesztve ]
-
kukinyo
addikt
Sziasztok
Nem tudom hogy kérdésem jó helyen teszem e fel, remélem igen
Előszeretettel használom blade-en a CM7.2 android verzióját, amiben ugye nincs navibar funkció.
Ezt igyekszem úgy pótolni hogy a framework-res.apk-t kibontottam és a values\bools.xml-ben bekapcsoltam a statusbar soft button funkcióját.
Ez nagyon is megfelelne ha nem lennének annyira kicsik a gombok.
Megtaláltam azt hogy a statusbar magasságát hol lehet állítani, arra is rájöttem hogy a statusbar ikonjait hol tudom méretezni, viszont a soft button mérete ezekkel a beállításokkal nem változik.
Hol tudnám megnövelni a gombok méretét?
Új hozzászólás Aktív témák
- Új, bontatlan Samsung S24+ 256 GB black
- Dell Latitude E7270, 12,5" HD Kijelző, i5-6300U CPU, 8GB DDR4, 256GB SSD, W10, Számla, Garancia
- Amazfit I T-REX 2 I GTS 3 I GTR 3 I GTR 3 Pro
- Új Latitude 7440 2-in-1, FHD+ IPS kihajtható érintő, i7-1365U, 32GB DDR5, 512GB NVMe, IR kamera, gar
- Beszámítás! GB H610M i5 13400F 32GB DDR4 1TB SSD RTX 3070Ti 8GB MONTECH AIR 1000 Lite Corsair 650W