Hirdetés
Új hozzászólás Aktív témák
-
Karma
félisten
válasz
RexpecT
#1297
üzenetére
Az okozza a félreértést, hogy tettél egy alaptalan feltételezést, ami egyébként elég súlyos is lehet különösen rendszererőforrásokkal kapcsolatban: "az osztály amely implementálja ugye nem adja át a saját interfész referenciáját".
Hogyne tenné? Konkrétan a LocationManagernek kell átadni az interfész referenciát az utolsó paraméterben. Ha megnézed a metódus forrását, az is látszik, ahogy egy HashMapben eltárolja a listenerre mutató hard referenciát. Gyakorlatilag ugyanaz, mint az A-B-C-s példakódod. És ez veszélyes, mert ha nem szünteted meg a regisztrációt, akár Activityk is maradhatnak beragadva a memóriában.
Java alatt "semmi se történik ok nélkül", nincsenek a levegőben röpködő és villámszerűen az objektumaid póznájába becsapódó események (mint lehetne pl. egy JVM szintű publish-subscribe rendszer). Valahol biztosan regisztrálnod kell magad egy konkrét objektumnál.
-
Karma
félisten
válasz
kemkriszt98
#1298
üzenetére
Float és double típusoknál a nullával való osztás Infinityt ad vissza; ellentétben az egész számokkal ahol kivételt dob.
-
kemkriszt98
tag
Sziasztok, adott a következő kód:
......
float a,b,c
if( a != b){
c = ((a*b)/(a - b));
}else{
mTextView.setText("Nem!")
}na mármost ez a kód abban az esetben ha az a is és b is = ugyan azzal a NEGATÍV (pozitív esetén nem ) számmal akkor az mTextView-ban az a szöveg jelenik meg hogy Infinity(ami nem tőlem származik...), szerintetek ez mért van?
A kód tartalmazott más logikai hibát is így át lett alakítva de azért érdekelne hogy miért történt ez... -
RexpecT
addikt
Üdv!
Itt tenném fel a kérdést, de akár a Java topikba is mehetne.
Arra lennék kíváncsi, hogy az Android hogyan valósítja meg például a LocationListener interfészen keresztül történő metódushívást ( az osztály amely implementálja ugye nem adja át a saját interfész referenciáját, mégis meghívódnak az interfészben deklarált metódusok).
Ezt a fajta interfészen történő értékvisszaadást ismerem:
class A implements C{
B b = new B();
b.setListener(this);
interfacemethod(parameter){
}
}
class B{
C mListener;
method(){
mListener.interfacemethod(parameter);
}
setListener(C cInterface){
mListener= cInterface;
}
}
interface C{
interfacemethod(parameter);
}
-
bucsupeti
senior tag
Karma: Bocs, nem olvastam végig, hogy nem akarsz külső rendszert bevonni.
Márpedig az email nem így működik, úgyhogy szerintem valamelyik kritériumodból engedni kell.Igen tudom hogy az email nem így működik...
A kérdésemet átfogalmazom:Megoldható-e úgy a levélküldés a saját programomból, hogy a beállított Exchange fiókon keresztül felhasználói interakció nélkül küldöm a levelet?
-
Karma
félisten
válasz
bucsupeti
#1292
üzenetére
Regisztrálj Azure fiókot, igényelj ingyenes SendGrid szolgáltatást, és használd a JSON interfészüket az email küldésre. GitHubon van is egy lib hozzá (sendgrid-java). Így teljesen elkerülöd az Androidot és nyomot se hagysz.
Szerk.:
Bocs, nem olvastam végig, hogy nem akarsz külső rendszert bevonni.
Márpedig az email nem így működik, úgyhogy szerintem valamelyik kritériumodból engedni kell. -
rgeorge
addikt
válasz
bucsupeti
#1292
üzenetére
Az miért baj, hogy kell SMTP hozzáférés? Android => Google => GMail => SMTP. Kell egy Google fiók, ami egyébként sem árt egy Androidos eszközre, az pedig ad SMTP hozzáférést is. De a mobilszolgáltató is biztosít SMTP-t, ha van mobilinternet, ahhoz még autentikáció sem kell.
-
bucsupeti
senior tag
Sziasztok!
Problémám a következő:
Szeretnék egy alkalmazással adatokat gyűjteni és ezeket egy valamilyen fix formátumú plain text email üzenetként elküldeni. Az adatokat egy Exchange postafiók fogadná, amit ott egy VBA makró fog feldolgozni. (ezek a lehetőségek, ezt kell használnom)
A problémám az email küldéssel van. Ahogy tájékozódtam kétféle módszert találtam. Az egyik az intent használata. Ennél az a baj hogy megnyílik az email alkalmazás és ott még egy küldést kell a felhasználónak elvégeznie.
Ha teljesen automatára akarom csinálni akkor a javax.mail használatát találtam meg, de ehhez kell SMTP szerver hozzáférés.
A készülékeken amin futni fog ez az alkalmazás McAfee EMM-el Exchange postafiók van beállítva. Ezt a csatornát hogyan lehetne felhasználni levélküldésre?
Milyen egyéb lehetőségek vannak arra hogy felhasználói interakció nélkül tudjak levelet küldeni úgy, hogy nem veszek igénybe egyéb külső szolgáltatásokat (pl webszerver PHP script segítségével).Nem lehet valahogy a beépített mail alkalmazás objektumait felhasználni?
-
half333
őstag
Tudnátok segíteni? Főzött romot szeretnék feltenni a telefonomra,de mikor rámegyek a choose zip from sd card-ra,ezt irja ki: cant mount sd card. Mit tegyek?
-
thon73
tag
válasz
kemkriszt98
#1281
üzenetére
Ha jól fordítom magyarra a kérdést:
Különböző layout-okon azonos névvel jelölt UI elemek nem zavarják-e a programot?Ez egy nagyon jó kérdés. A gyakorlat azt mutatja, hogy nem zavarja; nekem is van két "filter"-em két különböző layout-ban. Mivel a keresés mindig egy layout-on belül történik, ezért (természetesen) mindig a megfelelőt találja meg.
Ugyanakkor, ha az R.java-t (gen-ben) megnézed, akkor csak egyetlen filter szerepel benne, vagyis esetemben a két filter ugyanazt az azonosítót kapja.
((Én ezt fel is használtam a Fragmentek kezelésében: Ha portrait és landscape módban ugyanazon nevű frame-ek szerepelnek, akkor a kész fragment visszatölthető (pontosabban visszatöltődik). Különböző nevű frame-ekbe ugyanaz a fragment példány nem tölthető be.))
-
Bozek
nagyúr
Csak hogy megtaláljam, miután átnéztem a könyvet és az ITFactory-s oktatást.

Közbe egy kérdés is lenne. Leszedtem az ADT-t, amikor csinálok egy projekt-et, akkor nem hozza létre automatikusan az AndroidManifest.xml-t? Vagy csak nálam van valami elállítva?
-
thon73
tag
válasz
kemkriszt98
#1277
üzenetére
Gugli első találat
Szépen így kell int-et kiírni:
tv.setText(String.valueOf(k));
De ha valami szöveget hozzáfűzöl, akkor az átalakítás automatikusan megtörténik:
tv.setText(""+k);
Vagy:
tv.setText("Az eredmény: " + k);Volna még egy javaslatom: az activity-re, mint egységes egészre kell tekinteni. Az egyes UI elemek ennek az egésznek képezik részét, és bármely alrészletnek (metódusnak) szüksége lehet rájuk. Ezért érdemes osztály színtű (akár private) változóként elkészíteni őket, melyek az onCreate-ben kapnak értéket. Ettől a ponttól kezdve viszont minden résznek (a Listener-nek is) rendelkezésére állnak. Meglátod, sokat egyszerűsödik a kód.

-
Yany
addikt
válasz
kemkriszt98
#1277
üzenetére
Szerintem int esetén egy resource azonosítónak véli az értékét. Pl. R.id.valami.
-
kemkriszt98
tag
Ok, megvan viszont akkor valaki elmagyarázná? ha a setText nem tud intet kiírni akkor a fordító mért nem ad hibát?
-
kemkriszt98
tag
válasz
kemkriszt98
#1275
üzenetére
Valami az int-ek körül van...
-
kemkriszt98
tag
Sziasztok, ha valaki megtudná mondani, hogy miért áll le az activity(kivételt nem dob) ha megnyomom a gombot( kommentben 1. gomb néven fut) az nagyon szuper lenne

Már tanultam az előzőből

Kód -
Karma
félisten
válasz
SektorFlop
#1272
üzenetére
Példám most nincs, de a lehető legegyszerűbb megoldás az, ha van egy vízszintes LinearLayoutod, a két gyereke szélességét 0dp-re állítod, és a layout_weightet 1-re. Ez a szülő LinearLayout pedig match_parent széles.
Dave-11: A MediaPlayerezést inkább felejtsd el, használd helyette a SoundPoolt. Miután betöltötted a hangokat, a play metódus visszaad egy ID-t, amivel leállíthatod a már játszottat az új indításakor.
-
Dave-11
tag
Van néhány gondom. Egy egyszerű appot írok, van egy gombom, és ha arra rányomok csinál egy MediaPlayer objektumot, és véletlenszerűen választja ki hozzá a hang fájlt. Annyi kéne, hogy ha megnyomom a gombot, akkor lejátssza a hangot, és ha megnyomom gyorsan még egyszer, akkor állítsa le az előzőt és randomoljon egy új hangot és azt indítsa el. Illetve ha megy a hang és kilépek közben akkor állítsa le.
Tudtok ehhez valami jó tippet adni? -
-
Karma
félisten
válasz
SektorFlop
#1270
üzenetére
Igen. Mind a kettővel meg lehet csinálni.
Mi a kérdés? -
SektorFlop
aktív tag
Valaki csinált már valami olyasmit, hogy 2 button vízszintesen kitölt egy linear vagy relative layout-ot, pl 50-50 százalékban?
-
fatal`
titán
válasz
kemkriszt98
#1265
üzenetére
Az ott van, csak maga a textbox nem létezik, mert a setContentView tölti be.
-
kemkriszt98
tag
Ok, értem.
köszönöm -
SektorFlop
aktív tag
válasz
kemkriszt98
#1265
üzenetére
Magyarázásba nem vagyok jó, buta "programozó" vagyok nem tudok róla beszélni csak kódolni tudok vagy néha még azt se.
De azért megpróbálom érthetően leírni, max a többiek kijavítanak majd. 
Szóval, elsőnek az activity-ben létre kell hozni egy view-t (fel kell "fújni" a layout-ot), és csak ezután léteznek az elemek.
-
rgeorge
addikt
válasz
kemkriszt98
#1265
üzenetére
Csak pl. a view-k létre sem jönnek a setContentView hívás előtt, mert éppen abban jönnek létre.
-
kemkriszt98
tag
válasz
kemkriszt98
#1264
üzenetére
Amúgy ezt meg tudnád magyarázni , hogy miért van így? Hisz attól még az R.java létezik és az id ott van...
-
kemkriszt98
tag
válasz
SektorFlop
#1263
üzenetére
Azért egy "tankönyvben" egy ilyesmit igazán megemlíthetnének
kösz. -
SektorFlop
aktív tag
válasz
kemkriszt98
#1262
üzenetére
setContentView-t tedd UI elemek definiálása elé.
-
kemkriszt98
tag
Kicsit át lett írva de ugyan az a hibaüzenet :
-
SektorFlop
aktív tag
válasz
kemkriszt98
#1260
üzenetére
Igen úgy odapakolja, sorry az elkerülte a figyelmem.
-
kemkriszt98
tag
válasz
SektorFlop
#1259
üzenetére
Lévén ez a mainactivity-ben van így az Eclipse generálta a kódot így annak ott kell lennie.... Ha haza érek bemásolom a kódot.
-
SektorFlop
aktív tag
válasz
kemkriszt98
#1249
üzenetére
RuntimeException: Unable to start activity ComponentInfo{....}: Java.lang.NullPointerException
Lehet butaság de én a fenti exceptionból arra következtetnék hogy az onCreate-ból lemaradt a setContentView() metódus. Bár nem kizárt hogy több oka is lehet az alábbi üzenetnek.
-
SektorFlop
aktív tag
Ezt miért dobálja a logcat invalid int: ""?
Egy EditText értékét parsolom integer típussá. De ha jól gondolom már a view létrejötte után dobja, nem a parsolásnál. -
Karma
félisten
válasz
kemkriszt98
#1256
üzenetére
Mi lenne, ha a layout XML-t és ezt a Java forrásfájlt megosztanád velünk pl. PasteBinen, és akkor nem kéne vakon találgatni?
-
fatal`
titán
válasz
kemkriszt98
#1254
üzenetére
Akkor a t1 null, valamiért nem találja a findviewbyid a textboxot az xmlben.
-
kemkriszt98
tag
Nem az id-kel van baj mert már megnéztem. És az exception mellet a 18 as sort írja ami az ahol a t1 hez hozzá adom az onClickListener-t
-
Karma
félisten
válasz
kemkriszt98
#1249
üzenetére
A nullpointerexception alatti stacktrace minden soránál van egy fájlnév és egy sorszám. Ha kettőt kattintasz rá, még oda is visz az Eclipse. Nézd meg, melyik a felülről legelső sor, ami a te kódod, és javítsd ki.
Pl. egy gyanús lehetőség: a layout XML-ben nem, vagy rosszul állítottad be a TextView-k ID-jét, ami miatt a findViewById null értéket ad vissza.
-
Sianis
addikt
válasz
kemkriszt98
#1249
üzenetére
Activity2 benne van a menifest fájlban?
Sianis
-
fatal`
titán
válasz
kemkriszt98
#1247
üzenetére
Esetleg, ha beírod, hogy az adb milyen exceptiont dob, amikor leáll, akkor lehet, hogy könnyebben tudunk segíteni.

-
kemkriszt98
tag
Sziasztok, adott a következő kódrészlet :
TextView t1 = (TextView) findViewById(R.id.t1);
t1.setOnClickListener(new OnClickListener() {@Override
public void onClick(View v) {
Intent intent = new Intent(MainActivity.this,Activity2.class);
startActivity(intent);
}
});
TextView t2 = (TextView) findViewById(R.id.t2);
t2.setOnClickListener(new OnClickListener() {@Override
public void onClick(View v) {
finish();
}
});Na mármost ez e MainActivity onCreate metódusában van valami baj van vele.
Ha ki kommentelem akkor gond nélkül lefut az alkalmazásom de ha ez bent van akkor még el se indul máris kiírja, hogy unfortunatly the application has stopped
Ötlet? -
thon73
tag
Teljesen más téma, végre egyszer ne csak kérdést tegyek fel. Sokat kínlódtam azzal, hogy automatikusan eltüntessem a soft-keyboard-ot listView használatakor. A neten úgy láttam, hogy ezzel másnak is baja van.
Én a következő érdekességet találtam:A listView megérintésére így tudtam eltüntetni a billentyűzetet:
list.setOnTouchListener(new OnTouchListener()
{
@Override
public boolean onTouch(View v, MotionEvent event)
{
if (event.getAction() == MotionEvent.ACTION_DOWN)
{
InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow( list.getWindowToken(), 0);
}
return false;
}
} );Érdekes, hogy nem kell a focus-t átadni, ill. az is mindegy, hogy melyik View szolgáltatja a Token-t. A billentyűzet eltűnik, és ezt semmi más módon nem tudtam elérni itt.
A készülék elfordításakor azonban a bill. mindenképpen előugrik, és a fenti módszer hatástalan volt. Ezzel szemben a focus elkérése működött (holott a fenti esetben nem!):
@Override
public void onResumeFragments()
{
....
// list.setFocusable( true ); //az utóbbi ezt is beállítja
// list.setFocusableInTouchMode( true );
// list.requestFocusFromTouch();
list.requestFocus();
}Az első három sor nem véletelenül kikommentelt, azok nélkül is működött.
Most csak akkor lesz billentyűzetem, ha a keresőmezőbe írok.

Ha valakinek lenne ennél egyszerűbb/jobb ötlete, szívesen veszem. Ha valakinek segít a fenti snipplet, annak is örülök! -
thon73
tag
válasz
WonderCSabo
#1242
üzenetére
Nem akarom megtartani. Pont ezért kérdezem. De ez a példa szerepel magában a dokumentációban.
((Szerintem egyébként azért "tartja meg", mert a getActivity() mindig Activity-t ad vissza. Így egyszerűbb, mint minden alkalommal átalakítani az Activity-t Listener-é. Ezt csak gondolom.)) -
thon73
tag
Egy egyszerűbb kérdésben kérem a véleményeteket:
A doksiban a Fragments/Creating event callbacks to the activity rész szerint:
public static class FragmentA extends ListFragment {
OnArticleSelectedListener mListener;
...
@Override
public void onAttach(Activity activity) {
super.onAttach(activity);
try {
mListener = (OnArticleSelectedListener) activity;
} catch (ClassCastException e) {
throw new ClassCastException(activity.toString() + " must implement OnArticleSelectedListener");
}
}
...
}Az a kérdésem, hogy ezzel a lépéssel nem tartjuk-e meg az mListener-be átadott Activity-t a világ (pontosabban a fragment) végezetéig, tehát nem kellene-e az onDetach() metódusban elengedni?
Ha pedig nem, akkor ugye felhasználhatom az mListener (ami az activity)-t bármikor és null-ellenőrzés nélkül a Fragmentben?
-
lordjancso
senior tag
Az a baj, hogy nem egészen látom ennek a rajzolásnak a működését, tehát eléggé sötétben tapogatózom és már kezdem elveszteni a fonalat, hogy mier is gondolsz pontosan.

Az UrlDrawable osztályban felüldefiniáltam a setBounds metódust, de nem tudom, hogy az osztály drawable változójával mit kezdjek a setBounds-on belül.
Annyit sejtek erről a setBounds-ról, hogy a 4 int paraméteréről, hogy az első kettő a kép bal felső sarkának x és y koordinátáit adja meg, a második kettő pedig a jobb alsó pont x és y koordinátáit.Alapvetően az UrlImageParser osztályban az onPostExecute-ban történik átméretezés, mert a result.getIntrinsicWidth() és a result.getIntrinsicHeight() kisebb számoakt adnak vissza, mint a kép eredeti mérete, csak nem eléggé kicsinyíti le.
Azt nem tudom, hogy mi alapján kicsinyít? Egy 1024x768-as képből 680-valamennyi széles képet csinált (magasság aránytartóan ehhez megfelelőnek 500 valamennyi), viszont a kijelzőm 600x800-as méretű, így a képből egy kis rész kilóg. -
Karma
félisten
válasz
lordjancso
#1238
üzenetére
Hm. Megpróbálhatnád azt, hogy felüldefiniálod a setBounds metódust az UrlDrawable-ben úgy, hogy a tagváltozóba rakott képre is meghívja azt, ugyanazokkal a paraméterekkel.
Mondjuk célszerű azt az esetet is kezelni, ha még null a kép, és majd a jövőben jön létre. Az előző bekezdésben leírt módosításon túl az onPostExecute-ban fel kell cserélned az urlDrawable.drawable = result sort a setBoundsszal, így az új méret mindkét objektumra hat.
-
lordjancso
senior tag
Megpróbáltam a setBounds-ban úgy beállítani, ahogy szeretném, de nem jártam sikerrel.
Egy jóval nagyobb képet használtam, mint a kijelzőm mérete.
A setBounds-ot így állítottam be: urlDrawable.setBounds(0, 0, 100, 100);
Ebben az esetben a képnek 100x100-asnak kellene lennie. A Drawable object mérete valóban 100x100 méretű, viszont a képet átméretezés nélkül rakja bele, így a kép kilóg a konténerből.
Remélem érthetően fogalmaztam.
Hogyan tudnám ténylegesen a képet méretezni? -
Karma
félisten
válasz
lordjancso
#1236
üzenetére
Az onPostExecute-ban van egy setBounds hívás, azt kell módosítanod úgy, hogy azt csinálja amit szeretnél.
-
lordjancso
senior tag
És még egy kérdésem lenne, mert erre sem találok semmi értelmes megoldást...
Hogyan tudnám az így megjelenő képek szélességét százalékos formában megadni? Az a baj, hogy így a kép különböző méretű kijelzőkön különböző méretben jelenik meg.
ImageView-nál meg lehet adni százalékos méretezést, de ugye most egy TextView-ban vagyunk. -
Karma
félisten
válasz
lordjancso
#1233
üzenetére
Bevallom sose használtam az ImageGetter megoldást, ha HTML-t kellett megjeleníteni, mindig a WebView-t preferáltam. Kicsit keresgélve úgy tűnik, hogy az invalidate hívás tényleg nem rendezi újra a tartalmat.
Workaroundot láttam: a WeakReference<View> helyett WeakReference<TextView>, és az invalidate helyett kell egy c.setText(c.getText()) hívás.
-
lordjancso
senior tag
SIkerült megoldani ezzel a megoldással, a kép már letöltődik, viszont rácsúszik a szövegre.
Úgy viselkedik, mintha nem tudná értelmezni a szélesség-magasság paramétereit a képnek.
Pedig a bekeztések külön paragrafusban vannak (<p></p> tag a html-ben) és a kép és igy külön bekezdés..
Erre nincs véletlenül valami ötleted?Egyébként ez lenne a legjobb módszer html tartalom megjelenítésére az alkalmazásban, vagy használjak WebView-t? Úgy tudom 2.x androidon nem lehet átlátszóra állítani a WebView-t és az problémás lehet a számomra. Plusz úgy gondolom, a betűméret, betűtípus sem lenne tökéletesen megegyező a WebView-ban és az alkalmazás többi részén.

-
Karma
félisten
válasz
lordjancso
#1221
üzenetére
Semmi nagy dologra nem gondoltam, két dolgot változtatnék a példán a rend kedvéért:
1) Ahogy nézem, nem használja fel az URLImageGetter a konstruktorban átadott Contextet, úgyhogy a tagváltozót és a paramétert törölném azonnal. Ha meg mégis kéne, akkor a View-tól kérném el.
2) A container tagváltozója ugyanennek az osztálynak erősen kapaszkodik (hard reference) a View-ba, úgyhogy ha mondjuk a letöltés tíz percig tart, a felhasználó már régen továbbállt mert megunta, akkor se tudja a GC felszabadítani az egész Activityt.
Könnyen elkerülhető, ha a container tagváltozó nem View, hanem WeakReference<View> típusú. Két sort kell módosítani hozzá, és máris nem akadályozza a GC-t – csak le kell ellenőrizni onPostExecute-ban, hogy megvan-e még a View, vagy már vége.public class URLImageParser implements ImageGetter {
WeakReference<View> container;
public URLImageParser(View t) {
this.container = new WeakReference<View>(t);
}
public class ImageGetterAsyncTask extends AsyncTask<String, Void, Drawable> {
URLDrawable urlDrawable;
...
@Override
protected void onPostExecute(Drawable result) {
View c = URLImageParser.this.container.get();
if (c == null) return;
...
// redraw the image by invalidating the container
c.invalidate();
}
...
}
}[ Módosította: doc ]
-
fatal`
titán
válasz
kemkriszt98
#1228
üzenetére
Legalább 5-10 hozzászólást olvasnál vissza...
Nem lehet fizetős appot publikálni Magyarországról.
-
Yany
addikt
Pont erre keresnék megoldást, hogy mondjuk létezik olyan cég, aki megfelelő paraméterekkel rendelkezik és az ilyen "jött-ment" országokban létrejött fejlesztők munkáját n%-ért cserébe publikálja? Vagy bármi más konstrukció?
Illetve biztos vagy benne, hogy hirdetésből származó bevételt lehet termelni ilyen országokban? Szerintem az sem megy, nem csak a pénzes és in-app szoftverek, de lehet, hogy rosszul tudom.
-
Yany
addikt
Jelenleg milyen alternatívák vannak, ha pénzt szeretnél keresni egy appal? Hirdetéses-ingyenes, in-app purchase és akár pénzért árult szoftver esetén is érdekelne, hogy csak az egyetlen mód egy külföldi székhelyű és bankszla-jú vállalkozás indítása, vagy van más mód is? Köszi a segítséget.

-
doc
nagyúr
válasz
kemkriszt98
#1222
üzenetére
Beregisztralsz, kifizeted a 25 dollaros dijat, es onnantol tolthetsz fel ingyenes appot.
-
kemkriszt98
tag
Sziasztok, az lenne a kérdésem hogy egy ingyenesnek szánt alkalmazást minden gond nélkül fel lehet tölteni vagy vannak különféle jogi nyavalyák amik kötelezőek?
-
Karma
félisten
válasz
lordjancso
#1219
üzenetére
Javaslom ezt a StackOverflow kérdést és az elfogadott válaszát megtekintésre. Mivel a TextView adott, csak az ImageGetter interfészt tudnád használni, arra meg ez egy járható megoldásnak tűnik.
Bár én biztosan WeakReference-et raknék el a View-hoz.
-
lordjancso
senior tag
Üdv!
Hogyan tudnám megoldani, hogy adatbázisból jövő html szöveget egy TextView-ban megjelenítek úgy, hogy a képek is megjelenjenek? A sima html szöveg nagyon jól megjelenik a Html.fromHtml metóduson keresztül, de a képek helyén csak egy kékes kis négyzetet látok.
A képeim természetesen abszolút hivatkozások, tehát:
<img src="http://domain.hu/my_image.jpg" /> -
Sianis
addikt
Működik az félig magától is, csak használd a setEmptyView metódust.
Sianis
-
Sianis
addikt
Ha megengeded, hogy belepofátlankodjak, én így csinálnám: [link]
Ha pedig empy részt akarsz csapni hozzá, akkor a ListView alá tennék egy layout-ot, id-ja @android:id/empty lenne és teljesen olyan paraméterekkel menni, mint a ListView, csak a visibility lenne gone.
Így vagy egyik vagy másik layout látszana és kényszerítené ki a lent elemtől, hogy lent is maradjon.
Sianis
-
thon73
tag
Időközben eddig jutottam:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<TextView
android:id="@+id/ending"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="8dp"
android:layout_marginRight="8dp"
android:layout_marginBottom="12dp"
android:textAppearance="?android:attr/textAppearanceMedium"
android:text=".ext"
android:layout_alignParentBottom="true"
android:layout_alignParentRight="true" >
</TextView>
<EditText
android:id="@+id/filter"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_toLeftOf="@+id/ending"
android:hint="@string/filter_hint" >
</EditText>
<ListView
android:id="@+id/list"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingLeft="8dp"
android:paddingRight="8dp"
android:layout_alignParentTop="true"
android:layout_above="@+id/filter" />
</RelativeLayout>De vajon hova kell tenni az empty részt? Pontosabban milyen attribútumokkal, hogy ne takarítson el minden mást?
És egy apróbb kérdés: az ending és filter részeket hogyan lehetne szebben egy magasságba tenni? (Tehát, ha jól olvastam, akkor a fix szélességű ending-nek kell előbb szerepelnie, hogy utána fel tudja tölteni a maradék helyet a filter-rel. De így nem tudom az ending alapvonalát a filterrel egybe állítani.)((Kiegészítve: akkor ugrott fel, ha az empty View jelent meg a list helyett.))
-
thon73
tag
válasz
WonderCSabo
#1208
üzenetére
Igen alignolja is, sőt azt is kiolvastam, hogy először ezt kell megadni, mert különben a listView "mögé" kerül az alsó sornak. Mégis, ha pl. kifogy a lista (mert rászűrtem az elemekre) minden elugrik a... Ha kicsi a képernyő, akkor megintcsak egymás mögé csúsznak az elemek.
-
doc
nagyúr
felkerult az elso appom a Google Playbe

Maga a jatek nem egy orult nagy cucc, egy regi, erintokepernyos handheldre keszult jatek portja, amolyan 'technikai teszt' jelleggel, SDL2-vel keszult, efelett van egy egyszeru, nagyreszt az app inditasaert es a reklamok kezeleseert felelos Java reteg.
Abszolut minimalista grafika, egyszeru, gyors jatekmenet, csak semmi bonyolult
Most, hogy ez is megvan, johetnek a komolyabb jatekok is![;]](//cdn.rios.hu/dl/s/v1.gif)
-
thon73
tag
Layout témában szeretnék segítséget kérni.
Erre a felosztásra lenne szükségem:
Ez a kép két, egymásba ágyazott LinerLayout-tal működik. Mindkettőben a Weight paraméter van a nagyobb rész javára 1-0-ra beállítva, így mindig minden látszik. Az alsó filter-sor mindig alul van, és egy sor magas, a lista mindig kitölti a fennmaradó helyet.
Az Eclipse panaszkodik, hogy rossz lesz a performance, ezért megkíséreltem az egészet beletenni egy RelativeView-ba. De! Ha a lista üres, akkor a filter sor felugrik a kép tetejére (persze, mert ilyenkor csak egy sima textView jelenik meg a lista helyett). Ha elfordítom a telót, és megjelenik a bill. is, (tehát alig van hely), akkor végképp összeomlik az egész, és egymásra csúsznak az elemek. (LinearView-nél nincs ilyen baj, igaz a listből alig látszik egy sor.)
Megoldható ez RelativeLayout-ban? Tehát a kérések: filter-sor mindig legalul maradjon, és a filter-sor akkor se csússzon össze a listView-val, ha igen kicsi a rendelkezésre álló terület.
-
Karma
félisten
válasz
lordjancso
#1204
üzenetére
Azt vágod, hogy az onCreate-ben egy lokális változót hoztál létre, miközben az osztályod tagváltozója soha nem kap (az indító nullon kívül) értéket? Vedd ki az "ArticleAdapter" típusnevet az értékadás előtt.
-
lordjancso
senior tag
Újabb kérdéssel állnék elő!

Csináltam egy async kérést, feldolgoztam a választ egy ArrayList-be, majd ezt az ArrayListet állítom be egy adapternek, amit a ListActivity-m adaptereként szeretnék használni, hogy feltöltsek az eredménnyel egy ListView-t.A ListActivity-m onCreate metódusában ha kézzel töltöm fel az adaptert, tökéletesen működik:
ArrayList<Article> articles = new ArrayList<Article>();
articles.add(new Article(1, "Első", "Leírás1", "Tartalom1"));
articles.add(new Article(2, "Második", "Leírás2", "Tartalom2"));
articles.add(new Article(3, "Harmadik", "Leírás3", "Tartalom3"));
ArticleAdapter adapter = new ArticleAdapter(this, articles);
setListAdapter(adapter);Ha az async kérés eredményét szeretném feldolgozni, akkor NullPointerException-nel elszáll az egész.
public void onArticleSuccess(List<Article> aResult) {
adapter.setItemList(aResult);
adapter.notifyDataSetChanged();
}Az adapter.setItemList(aResult); sornál hal meg az egész.
Az adapterem így van deklarálva az osztály elején:
private ArticleAdapter adapter;Valami ötletetek van erre a dologra?

Előre is köszönöm! -
lordjancso
senior tag
Tegnap még késő este állítgattam rajta, és azt vettem észre, hogy egyik pillanatról a másikra működik.
Nem tudom, hogy melyik módosítás lehetett a titok nyitja, lehet hogy a getCount(), mert kezdetben 0-t adott vissza, de aztán megcsináltam. Lehetséges, hogy ez volt a hiba.
Viszont amikor sikerült, annyira örültem neki, hogy rögtön elmentem aludni.
Most mindjárt kipróbálom, hogy a getCount() visszatérési értékét 0-ra állítom. -
Sianis
addikt
válasz
lordjancso
#1201
üzenetére
A példányosított adapter nem null? A getCount() metódusa nem 0-t ad vissza? a getView() nem üres vagy null view-kat ad vissza?
Sianis
-
lordjancso
senior tag
Sziasztok!
Egy alkalmazásomban ezt a PagerSlidingTabStrip komponenst használom a menük és annak tartalmának megjelenítésére.
3 menüpontom van, ugye mindhárom egy-egy fragment amik egy ViewPager-ben helyezkednek el.
A MainActivity-m onCreate metódusában megkeresem az xml-ben lévő ViewPager-t, hozzárendelem a tabokat, minden oké, a menüm tökéletesen működik.
A probléma ott kezdődik, hogy az egyik menüpontom tartalma (tehát a ViewPager-ben lévő Fragment tartalma) egy ListView lenne.
Az adott fragmentemmel extendelem a ListFragmentet, onStart metódusában csinálok egy ArrayListet, amit feltöltötök a menüpontokkal, majd példányosítom a menüadapteremet, aminek átadom ezt az ArrayListet és a végén meghívom a setListAdapter(adapter) függvényt, így átadva a feltöltött adapteremet.
A problémám az, hogy csak várom a csodát, de egy tök üres fragment jelenik meg az orrom előtt...
Nem tudna valaki tippet adni, hogy mi felett siklottam el?
Remélem elég infót adtam, hogy tudjatok segíteni!
Előre is köszönöm!Szerk: Valószínűleg azt nem tudom, hogy tegyem rá a ListView-t a layoutra...
Új hozzászólás Aktív témák
- Apple iPhone 13 Pro Max 128GB,Újszerű,Dobozával,12 hónap garanciával
- iPhone 12 64GB 95% (3 hónap Garancia)
- REFURBISHED és ÚJ - DELL Thunderbolt Dock WD22TB4 (210-BDTD)
- ÚJ AKKU! Ár/ÉRTÉK BAJNOK! Dell Latitude 5330 i3-1215U 6mag! 16GB 512GB 13.3" FHD 1 év gar
- AKCIÓ! Apple MacBook Pro 16 M4 Pro 48GB RAM 4TB SSD macbook garanciával hibátlan működéssel
Állásajánlatok
Cég: BroadBit Hungary Kft.
Város: Budakeszi
Cég: PCMENTOR SZERVIZ KFT.
Város: Budapest




De azért megpróbálom érthetően leírni, max a többiek kijavítanak majd.

Azt szeretem az androidban, hogy olyan konzekvens...


![;]](http://cdn.rios.hu/dl/s/v1.gif)



