- iPhone topik
- Samsung Galaxy S26 Ultra - fontossági sorrend
- Samsung Galaxy Watch (Tizen és Wear OS) ingyenes számlapok, kupon kódok
- Már megint variál a Samsung az Ultrával!
- Samsung Galaxy A55 - új év, régi stratégia
- Samsung Galaxy A56 - megbízható középszerűség
- EarFun Air Pro 4+ – érdemi plusz
- Samsung Galaxy A52s 5G - jó S-tehetség
- Honor Magic8 Pro - bevált recept kölcsönvett hozzávalókkal
- Fotók, videók mobillal
-
3300 - 3201
5691 - 5601 5600 - 5501 5500 - 5401 5400 - 5301 5300 - 5201 5200 - 5101 5100 - 5001 5000 - 4901 4900 - 4801 4800 - 4701 4700 - 4601 4600 - 4501 4500 - 4401 4400 - 4301 4300 - 4201 4200 - 4101 4100 - 4001 4000 - 3901 3900 - 3801 3800 - 3701 3700 - 3601 3600 - 3501 3500 - 3401 3400 - 3301 3300 - 3201 3200 - 3101 3100 - 3001 3000 - 2901 2900 - 2801 2800 - 2701 2700 - 2601 2600 - 2501 2500 - 2401 2400 - 2301 2300 - 2201 2200 - 2101 2100 - 2001 2000 - 1
-
Fórumok
Mobilarena - mobil fórumok
Okostelefonok Mobiltelefonok Okosórák Autó+mobil Üzlet és Szolgáltatások Mobilalkalmazások Tartozékok, egyebek Mobilarena blogokPROHARDVER! - hardver fórumok
Notebookok TV & Audió Digitális fényképezés Alaplapok, chipsetek, memóriák Processzorok, tuning Hűtés, házak, tápok, modding Videokártyák Monitorok Adattárolás Multimédia, életmód, 3D nyomtatás Nyomtatók, szkennerek Tabletek, E-bookok PC, mini PC, barebone, szerver Beviteli eszközök Egyéb hardverek PROHARDVER! BlogokIT café - infotech fórumok
Infotech Hálózat, szolgáltatók OS, alkalmazások SzoftverfejlesztésGAMEPOD - játék fórumok
PC játékok Konzol játékok MobiljátékokLOGOUT - lépj ki, lépj be!
LOGOUT reakciók Monologoszféra FototrendFÁRADT GŐZ - közösségi tér szinte bármiről
Tudomány, oktatás Sport, életmód, utazás, egészség Kultúra, művészet, média Gazdaság, jog Technika, hobbi, otthon Társadalom, közélet Egyéb Lokál PROHARDVER! interaktív
Új hozzászólás Aktív témák
-
Zedz
addikt
-
lord.lakli
őstag
-
Zedz
addikt
Arra gondolok, hogy amikor előre kiválasztom, akkor belegenerál az Activitybe egy csomó mindent. Ezeket honnan tudom megszerezni? Most tanulom csak a dolgot, és a Mainnek Nav típus helyett Blankot adtam meg. Inkább újra kezdtem a projektet, de kíváncsi vagyok ezt kézzel hogyan lehet később forkolni.
-
Karma
félisten
-
Zedz
addikt
Sziasztok,
Ha a MainActivityt Blankként hoztam létre, tudok ezen később változtatni? Mondjuk ha Navigation típusúra szeretném variálni, akkor mit kell ehhez tennem?
-
Karma
félisten
-
thon73
tag
Egy fél napos keresgélés után a következőt találtam:
A build.gradle file-ban a classpath 'com.android.tools.build:gradle:1.0.0' bejegyzésben helytelen a verziószám, és magától nem javítja. Kézzel kell kicserélni 1.1.0-re.
Láss csodát, azóta működik!
Gondoltam, megosztom, hátha valakinek még hasznára lesz. Úgy tűnik, ez a hiba nem túl gyakran jelentkezik. -
thon73
tag
Technikai segítséget szeretnék kérni:
Android Studio 1.3 frissítés után a build leáll a következő hibával:"...
> Could not get resource 'https://jcenter.bintray.com/com/android/tools/build/gradle/1.0.0/gradle-1.0.0.pom'.
> Could not HEAD 'https://jcenter.bintray.com/com/android/tools/build/gradle/1.0.0/gradle-1.0.0.pom'.
> Connection to https://jcenter.bintray.com refused"Először proxy hibára gyanakodtam, de közvetlenül sem tudom a kívánt oldalt megnyitni. Pontosabban hol meg tudom, hol meg nem.
Mit lehet ilyenkor tenni?
Előre is köszönöm. -
Sianis
addikt
-
Zedz
addikt
Sziasztok,
Az miért lehet, hogy alapból más a sima input és a password input hint betűtípusa? Droid bug?
-
Zedz
addikt
-
Zedz
addikt
Sziasztok,
Android Studioban nem látom a drawable mappa subfoldereit. Hiába szinkronizálom újra a projektet, semmi nem jelenik meg benne, pedig file explorerben már behúztam a megfelelő dolgokat. Ez bug, beállítás, egyéb?

-
#39560925
törölt tag
Sajnos nincs sok időm foglalkozni az appal, de innen letölthető egy kezdetleges változata. A szerver DigitalOceanon fut egyénként. A forráskód itt van, hogy lássátok, nem csinál semmi rosszat.

-
tboy93
nagyúr
-
Karma
félisten
Az ObjectAnimator a barátod. Az XML-es megoldás is ilyen objektumokat állít össze, ez a guide meg elég alaposan végigmondja az elméletet és a gyakorlatot is.
-
tboy93
nagyúr
Sziasztok, a múltkori udp videóindításos dolgot nagyjából sikerült abszolválnom, most egy másik taskot kéne megoldanom.
Van egy kép amit forgatnom kell a tablet irányától függően. Faszán tudom forgatni, ezzel nincs is probléma, csak animálni szeretném. Erre csak ilyen xml-es animációkat láttam, de azokkal ma abaj, hogy pl. fixen 15 fokról 90 fokra forgat. Van erre valami megoldás vagy írnom kell 300 féle rotate xml-t?

-
tboy93
nagyúr
Sehol nem találok működő TCP server-kliens példát/tutorialt, esetleg tud valaki valami jót, amit tutira helyes?
-
lord.lakli
őstag
-
#39560925
törölt tag
-
tboy93
nagyúr
Elhihetitek hogy nem en talaltam ki. A fonokom ezt keri, nekem meg kell csinalni. Mit javasoltok, hogy juthatna at gyorsan a serverrol a kliensre az informacio? Vezetek nelkul sehogy? Egyaltalan ossze lehet kotni kabellel a tableteket? Vagy hogyan komunikaljanak, barmit meghallgatok, de mar teljesen tanacstalan vagyok.
TCP-nel hogy kene? Az nem csak egy kapcsolatot tud egyszerre fenntartani? Nekem ugye az kell, hogy tobb tabletre erkezzen meg az info, ezert valasztottam az udp-t. TCP multicast kizarva, azt nem tudja minden androidos tablet

Ja es az se biztos hogy azonos tipusu tableteken fog futni a kliens szoftver

Barmilyen bonyolult megoldas erdekel, csak mukodjon

-
Karma
félisten
-
#39560925
törölt tag
-
tboy93
nagyúr
Sziasztok! Segítségre van szükségem. Van egy appom, vagyis technikailag kettő. Az egyik a server, amit egy GPS-el ellátott androidos készülékre telepítünk. Adott továbbá X kliens tablet, amikben nincs GPS. Van egy power bankról működtetett router, ez biztosítja a hálózatot. A feladat az, hogy a server készülék GPS-éből kapott koordinátákat a lehet leggyorsabban megkapják a kliensek (lehetőleg egyszerre).
Merre kéne elindulnom? UDP-vel próbálkoztam, de össze vissza jönnek meg a csomagok, néha elveszik 10-ből 8, néha megjön az összes, néha késik 3mp-et aztán jön meg egyszerre 10...
Minden ötletre vevő vagyok.
Előre is köszönöm.

-
DaveBishop
csendes tag
Sziasztok!
Android és iOS programozásban, cloud rendszerek kiépítésében jártas fejlesztőt keresünk Győrben egy újonnan induló project megvalósításához. Akár egyetemi hallgatók, pályakezdők jelentkezését is várjuk.
Érdeklődni privát üzenetben.
-
#39560925
törölt tag
-
#39560925
törölt tag
-
Karma
félisten
Az OpenShiftnél nem nagyon tudod olcsóbban kihozni, ingyenesen futtathatsz egy kis gépet. Én oda szoktam fellőni a Boot projekteket általában.Bronze módban (ami ingyen van, de már meg kellett adni hozzá a bankkártyádat) már nem alszik el a gép soha; sima freeben inaktivitás esetén leáll és az első bejövő hívásnál ébred fel - késleltetve a választ.
Már másfél hónapja mondjuk nem néztem, de a Java 8-at kézzel kellett megoldani, van rá bejáratott házi sablonom. De egy kicsit több munka, nem egészen plug and play.
A Heroku 7 dolláros hobby dynoja se rossz, bár 7 dollárral több, mint az előbbi példa
Ott a free dyno sajnos többet alszik, kötelezően. Viszont frissebbek a buildpackek és amúgy nagyon király az egész. -
#39560925
törölt tag
Mi a legolcsóbb megoldás a Spring Boot-ot és MySQL-t használó backendem felhőben, vagy szerveren futtatásához?
-
WonderCSabo
félisten
FragmentStatePagerAdatpert használjál, és segítségével töltsd vissza az állapotot.
-
Gerzsi
tag
Sziasztok
Azt hogy tudom megoldani hogy van egy rakat fragment és csak három van előre betöltve és mikor visszagörgetek az elejére akkor újra létrehozza és az ottani változások így eltűnnek és nem szeretném hogy eltűnjenek ha vissza lapozok. Hogy tudom ezt megoldani? -
Karma
félisten
-
#39560925
törölt tag
-
#39560925
törölt tag
SwipeRefreshLayout-nak a spinnere nálam üres. Hogyan tudnám elérni, hogy pörögjön benne a cuccos?
Kód:
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
// Inflate the layout for this fragment
View view = inflater.inflate(R.layout.fragment_exceptions, null);
swipeRefreshLayout = (SwipeRefreshLayout) view.findViewById(R.id.swipe_container);
swipeRefreshLayout.setOnRefreshListener(this);
swipeRefreshLayout.setSize(SwipeRefreshLayout.LARGE);
swipeRefreshLayout.setColorSchemeColors(
android.R.color.holo_blue_light,
android.R.color.holo_purple,
android.R.color.holo_green_light,
android.R.color.holo_red_light
);
return view;
}@Override
public void onRefresh() {
swipeRefreshLayout.setRefreshing(true);
BackendConnector.getInstance().refreshExceptions(this);
}
@Override
public void onExceptionRefreshFinished() {
swipeRefreshLayout.setRefreshing(false);
} -
tboy93
nagyúr
Sziasztok! Van egy appom, amiben videókat is lehet lejátszani SD kártyáról. A problémám az, hogy egy 2 perces fullHD videónál totál belaggol az egész tablet amin fut a szoftver és az Eclipse logcat-en meg folyamatosan azt látom, hogy memóriát szabadít fel... Viszont ugyan ezt a videót sima galéria appal megnyitva viszi a tablet minden probléma nélkül.
video = (VideoView) findViewById(R.id.video);
if (SharedData.showMediacontroller) {
MediaController mcc = new MediaController(MediaActivity.this);
mcc.setAnchorView(video);
video.setMediaController(mcc);
}
try {
video.setVideoPath(actBlock.getMediaFilename());
} catch (Exception e) {
SharedData.log.write("MediaActivity.java - onCreate method - general zone video file error");
e.printStackTrace();
SharedData.isMediaBlockPlaying = false;
finish();
}
new VideoStarter().start();
video.setOnCompletionListener(new OnCompletionListener() {
@Override
public void onCompletion(MediaPlayer mp) {
SharedData.isMediaBlockPlaying = false;
finish();
overridePendingTransition(R.anim.fade_in, R.anim.fade_out);
}
});A videókezelésben van hiba vagy a program más részében keressem?

-
kemkriszt98
tag
Sziasztok,
Facebook messengerhez fejlesztett alkalmazás mitől jelenik meg a messengerben? Sehol nem találok arra utaló információt, hogy ezt nekem kellene valahogy hozzáadni vagy mi. -
thon73
tag
Bocs, még mindig a WACOM által okozott ACTION_CANCEL-nél vagyok leragadva.
Sehol nem találok info-t arról, hogy miként működik az ACTION_CANCEL multitouch esetén. Ugyanis ilyenkor (vagyis, ha az SPen közelít) egyetlen eventben van összefoglalva az összes touch ACTION_CANCEL megjelelöléssel. Más módon pedig nem tudtam ACTION_CANCEL-t előidézni.
Kérdésem:
AZ ACTION_CANCEL esetén minden multitouch érintés megszakad, avagy lehet olyan szituáció, hogy csak egyetlen érintés szakad meg, míg a többi továbbmegy? (Vagyis ACTION_CANCEL esetén ki kell-e értékelnem az összes event-ben lévő érintést, vagy simán eldobhatom az összeset? Köszönöm! -
horbala
csendes tag
Sziasztok,
Induló Startup cég Android fejlesztőt keres.
Amennyiben érdekel a lehetőség kérlek írj.
Köszönöm,
B. -
thon73
tag
Köszi! Nyilván azért, hogy rátehénkedhessek közben az érintőpanelre

Multitouch esetén viszont ez érdekes kérdéseket vet fel, mert lehet, hogy a felhasználó ujja még ott van a módosító billentyűn, amivel a stylus érintését módosítaná. Több billentyűzeten megnéztem, ez a probléma megvan - és technikailag nyilván megoldhatatlan. Majd kigondolom, hogy melyik feltételezés (tartja/elengedi) okozza a kisebb hibát... -
Karma
félisten
-
thon73
tag
Multitouch kapcsán tapasztaltam, hogy ha stylussal (Note) közelítek, akkor minden addigi touch megszakad egy ACTION_CANCEL kóddal.
Ez tartalmaz egy pozíciót is, ami viszont y irányban kb. 100-zal el van tolva.
Tapasztalta ezt már valaki?((Csak kíváncsi vagyok. Egyébként kihagytam a cancel mellett a pozíció ellenőrzést, ami előtte benne volt - de ettől még érdekelne, hogy az én készülékemben van a hiba, vagy ez általános android tulajdonság...))
-
WonderCSabo
félisten
-
Bozek
nagyúr
Mondjuk többet segítettél volna, ha linkeled is a topic-ot.

-
WonderCSabo
félisten
-
#39560925
törölt tag
-
Gerzsi
tag
Mennyiért melóztok android fejlesztőként ?
-
WonderCSabo
félisten
-
Benex
senior tag
Mielőtt nagyon leszolnátok, ha nagyon nagy butaságot irtam , első böngésző probálkozásom.
public class MainActivity extends Activity {
private WebView webview;
private Button btn;
private EditText url;
private String url_adress;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
this.url = (EditText)findViewById(R.id.url);
this.url_adress = url.getText().toString();
this.btn = (Button)findViewById(R.id.load_btn);
this.webview = (WebView)findViewById(R.id.webView);
WebSettings settings = webview.getSettings();
settings.setJavaScriptEnabled(true);
// webview.setScrollBarStyle(WebView.SCROLLBARS_OUTSIDE_OVERLAY);
webview.setWebViewClient(new WebClientClass());
webview.loadUrl("http://www.google.com");
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
webview.loadUrl(url_adress);
}
});
}
}
class WebClientClass extends WebViewClient
{
@Override
public void onPageStarted(WebView view, String url, Bitmap favicon) {
super.onPageStarted(view, url, favicon);
}
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
view.loadUrl(url);
return true;
}
}Illetve a gomb megnyomása után , a következőt kapom , amire interneten nem találtam olyan választ ami megoldaná
W/BindingManager﹕ Cannot call determinedVisibility() - never saw a connection for the pid: 13458 -
WonderCSabo
félisten
-
Benex
senior tag
Sziasztok
Egy számotokra szerintem egyszerű kérdésem lenne, de nekem valamiért nem megy. Csinálni szeretnék egy végtelenül egyszerű böngészőt. webview.loadUrl("http://exampla.hu"); így tökéletesen betölti a webview-om az oldalt , ha így statikusan adom meg neki a címet, de szeretném, ha egy edittextből kapott string alapján töltené be az oldalt, egy gomb lenyomása után. Ez valamiért nem történik meg és még hiba üzenetet se kapok , hogy miért.
Ha tudnátok itt segiteni , vagy valami oldalt belinkelni ami leirja szépen, hogy egy edittextből kapott stringet töltsön be , megköszönném. Már 2 napja probálkozok és valamiért nem jön össze.Előre köszönöm a segítséget.

-
WonderCSabo
félisten
-
#39560925
törölt tag
-
#39560925
törölt tag
Ok, ezt nem értem.
public static void testEventBus(final Set<ExceptionChangeListener> exceptionChangeListeners) {
GraphRequest request = GraphRequest.newMyFriendsRequest(accessToken, new GraphRequest.GraphJSONArrayCallback() {
@Override
public void onCompleted(JSONArray jsonArray, GraphResponse graphResponse) {
// request successfully returned
if (graphResponse.getError() == null) {
Log.d("response length: ", Integer.toString(jsonArray.length()));
Set<Friend> friends = new TreeSet<>(new Friend.NameComparator());
for (ExceptionChangeListener listener : exceptionChangeListeners) {
listener.onExceptionsChanged();
}
if (firstStart) {
friendListListener.onFirstAppStart(friends);
} else {
friendListListener.onAppStart(friends);
}
}
}
});
Bundle parameters = new Bundle();
parameters.putString("fields", "id,name,picture");
request.setParameters(parameters);
request.executeAsync();
}Facebook doksiból:
executeAsync():
Executes the request asynchronously. This function will return immediately, and the request will be processed on a separate thread. In order to process result of a request, or determine whether a request succeeded or failed, a callback must be specified (see the setCallback.setCallback(Callback) method).This should only be called from the UI thread.
Gombnyomásra meghívom az executeAsync()-et, meghívódik az onCompleted(), abban meghívom notifyDataSetChanged()-et, és nem áll le kivétellel az alkalmazás. Ez a callback a main szálon fut, vagy micsoda? Hogy lehet az?
-
WonderCSabo
félisten
-
Karma
félisten
Mármint a Guava EventBusról van szó, vagy lemaradtam valamitől?

-
WonderCSabo
félisten
-
#39560925
törölt tag
-
Karma
félisten
Megoldható persze, csak a kérdés nem jó. A ThreadEnforcer.ANY konstruktorparaméter is kell hozzá — ez biztosítja, hogy a buszra bármely szálról lehessen üzenetet küldeni —, viszont a szálak közötti átpasszolást neked kell megoldanod. A legegyszerűbb ehhez a Bus osztályból leszármaztatni. Mindjárt megkeresem a megfelelő kódot, csak mobilról nem gyors

Meg is van: [link]
-
#39560925
törölt tag
Most, hogy elkezdtem beépíteni mindenféle aszinkron hívásokat az alkalmazásba, felmerült a gondolat, hogyha történik egy aszinkon callback, és abból a callbackból értesíteni akarok különböző lista adaptereket az adataik megváltozásáról (notifyDataSetChanged), akkor azt hogyan tehetem meg ebben a szálban. Elvileg notifyDataSetChanged csak UI szálból hívható meg. Például itt ez a Facebook Graph Request. Ennek az onCompleted callback-je nem a főszálon fut. A benne meghívott onFirstAppStart metódusból szeretnék értesíteni egy adaptert. Ez Otto-val megoldható? Úgy látom ehhez az SO kérdéshez hasonló a problémám, de erre nem érkezett sok válasz.
-
#39560925
törölt tag
-
Karma
félisten
-
bucsupeti
senior tag
-
#39560925
törölt tag
-
fatal`
titán
-
bucsupeti
senior tag
Azt meg tudja valaki mondani hogy milyen "relációban" van az AndroidManifest.xml fájlban megadható versionCode és versionName illetve a build.gradle fájlban megadott versionCode és versionName? Ugyan ez érdekel a minSdkVersion és targetSdkVersion tekintetében is.
-
bucsupeti
senior tag
-
bucsupeti
senior tag
Elérkezett az idő hogy a Play-re töltsek fel egy appot. Olvasok minden félét mindenhol, de igazából nem látom át teljesen ennek az egésznek a folyamatát.
Android Studio-val dolgozom, minden beállítás alapértelmezett.
Eddig amit készítettem APK-t az úgy "terítettem" hogy kimásoltam a projekt apk/build/outputs/apk/app-debug.apk fájlt, átneveztem és ezt adtam oda azoknak akik használják.A kérdésem hogy innen hogyan jutok el a publikálásig. Gondolom kell (kell?) hogy alá legyen írva. Ezután hogyan buildelek? Kell valami egyéb beállítás a gradle-nak? Ha igen akkor mi?
-
#39560925
törölt tag
Köszi! Ez a dolog egyelőre el van odázva, de ha megcsinálom a settings menüt, akkor még visszaolvasom ezt a hsz-t.
-
bucsupeti
senior tag
-
repvez
addikt
Ha az a 2 éves ért angolul és elég értelmes akkor talán menne

DE forditott helyzetre is igaz, hogy számomra is ugy kéne elmagyarázni, hogy megértsem .
Eddg egyszer sikerült C++ ban egy képlet kiszámolós progit sima dosos ablakban karakteres modban futathatót készitenem. a cin és cout parancsok használatával. -
Karma
félisten
Egyáltalán nem nehéz, ha az alapfogalmakkal tisztában vagy. Ha minden egyes képernyő egy activity vagy fragment, a válaszok alapján meg mindig a megfelelőt indítod, áttekinthetetlen de legalább triviális eredményt kaphatsz. De van még egy pár variáció az általánosabb, szebb megoldásra.
Mondjuk ehhez tudni kell, mi fán terem a Java és mik az Android alkalmazások alapelemei és alapműködései. Nem tudom, ilyen háttérrel hogy lehetne kezdeni. Affinitásod van hozzá legalább? El tudnád magyarázni a probléma megoldását lépésről lépésre egy külföldi kétévesnek?
-
repvez
addikt
Mennyire nehéz csinálni egy olyan aplikációt ami ilyen flowchartot szimulál le?
[link]
Tehát, hogy amikor elágazáshoz érkezik akkor feladja a választási leheőségeket egy gombként és annak megfelelöen kérdez a következő eseményre?Nem pont ezt akarom amia képen van,de valami haszonlót csak egy kicsit több elágazással és válasszal
Még nem programoztam sehol semmiben, ugyhogy az is érdekelne, hogy androidhoz mi kéne ehhez.
-
WonderCSabo
félisten
Bocs, nem ismerem a use-caset, igazad van, nem kéne így tanácsot adnom ezzel kapcsolatban.
Két dolgot tehetsz:
* custom Preference osztály, amiben megírod, hogy benne legyen a Facebook button, majd a preferences.xml fájlba berakod
* nem rakod be az xml-be, hanem addPreferencesFromResorce hívása után kódban hozzáadod a VIew-t.Az első megoldás sztem sokkal szebb.
-
#39560925
törölt tag
Kicsit más: Custom View-t szeretnék használni ezzel a jó kis API-val, de nem tudom hogyan tudnék a Layoutban lévő TextView-eknek beállítani az értékét. Egy gomb eseménykezelőjében akarok feldobni egy material design-jú dialog albakot, saját layout-tal.
-
#39560925
törölt tag
Huh, köszi ismét a részletes segítséget.
Egyébként azt akarom majd megvalósítani, hogy a legutolsó 30 exceptiont tárolom az eszköz SharedPreferences-ében, és ha lejjebb görget a felhasználó, akkor elkezdi fetchelni a többit a szeverről. Ha van neki 1000 exception-je tárolva a szerveren, és elkezd lefelé görgetni, mint állat, akkor mennyit cellát érdemes egyszerre a memóriában tartani?A fentiek ismeretében melyik megoldást javaslod?
-
Karma
félisten
Most esett le amúgy, hogy SharedPreferencest használsz az adatok tárolására, így az egész litániámra semmi szükség. Fel tudsz iratkozni az SP változásokra - ha ezt használod a fragment onAttach/onDetachban, kész is vagy.
-
Karma
félisten
Azt semmiképp se tartom jó ötletnek, hogy a MainActivity közvetlenül ismerje az ExceptionsFragment példányt. Mivel a ViewPager is virtualizál (azaz a ListViewhoz hasonlóan csak a látható vagy szomszédos viewkat tartja életben), elég kusza helyzetek alakulhatnak ki.
Hogy ezt hogyan kerüld el, van pár lehetőség.
Az első a klasszikus jávás Listener minta. Az activityben definiálsz egy Listener interfészt, amit a fragment megvalósít, valamint egy kis ceremóniát, hogy fel lehessen rá iratkozni. A fragment onAttach metódusában regisztrál, onDetachban pedig deregisztrál - ameddig össze van kötve, az activity tud neki jelezni. Mondjuk a konkrét activity osztályt is elfedném akkor már.
ExceptionChangeListener.java:
public interface ExceptionChangeListener {
void onExceptionsChanged();
}ExceptionSource.java:
public interface ExceptionSource {
boolean addExceptionChangeListener(ExceptionChangeListener listener);
boolean removeExceptionChangeListener(ExceptionChangeListener listener);
}MainActivity.java:
public class MainActivity extends AppCompatActivity implements ExceptionSource {
private final Set<ExceptionChangeListener> mListeners = new HashSet<ExceptionChangeListener>();
...
public boolean addExceptionChangeListener(ExceptionChangeListener listener) {
return mListeners.add(listener);
}
public boolean removeExceptionChangeListener(ExceptionChangeListener listener) {
return mListeners.remove(listener);
}
... amikor módosítottad a listát, hívd meg ezt ...
private void notifyListeners() {
for (ExceptionChangeListener listener : mListeners) {
listener.onExceptionsChanged();
}
}
}ExceptionsFragment.java:
public class ExceptionsFragment extends Fragment implements ExceptionChangeListener {
@Override
public void onAttach (Activity activity) {
super.onAttach(activity);
if (activity instanceof ExceptionSource) {
((ExceptionSource)activity).addExceptionChangeListener(this);
}
}
@Override
public void onDetach() {
if (getActivity() instanceof ExceptionSource) {
((ExceptionSource)getActivity()).removeExceptionChangeListener(this);
}
super.onDetach();
}
@Override
public void onExceptionsChanged() {
adapter.notifyDataSetChanged();
}
}Huh, ez elég hosszú lett. A másik kettőbe inkább nem megyek bele így nyilvánosan kód szinten.
A második az lenne, hogy a fragmented onAttach/onDetach időben egy BroadcastReceivert indít el, az activity pedig Intenteket dobál, ha változás van. Ez lehet közvetlenül a sendBroadcast metódussal, vagy LocalBroadcastManagerrel. Lazább csatolás, de elég sok ceremónia.
A harmadik pedig egy event bus bevezetése (pl. Otto), ahol a logika ugyanaz mint a másodikban, csak kevesebb extra kód (eltekintve a lib dependenciától). Én így 2015-ben egyébként ezt az utat javaslom.
-
#39560925
törölt tag
Ha megváltoznak az adatok, hogyan tudom elérni a fragmentet, amiben a lista van? Jelenleg így épül fel az UI:
MainActivity így néz ki:
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:paddingBottom="@dimen/activity_vertical_margin"
tools:context="com.attilapalf.exceptional.ui.main.MainActivity">
<android.support.v4.view.ViewPager
android:id="@+id/pager"
android:layout_width="match_parent"
android:layout_height="match_parent">
<android.support.v4.view.PagerTabStrip
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="top"
/>
</android.support.v4.view.ViewPager>
</RelativeLayout>Tehát ez egy lapozható felület, 3 oldala van. Itt van a MainPagerAdapter kódja:
public class MainPagerAdapter extends FragmentPagerAdapter {
public MainPagerAdapter(FragmentManager fm) {
super(fm);
}
@Override
public Fragment getItem(int position) {
switch (position) {
case 0:
return new MainFragment();
case 1:
return new ExceptionsFragment();
case 2:
return new FriendsFragment();
default:
return new MainFragment();
}
}
@Override
public int getCount() {
return 3;
}
@Override
public CharSequence getPageTitle(int position) {
switch (position) {
case 0:
return "Main";
case 1:
return "My Exceptions";
case 2:
return "My Friends";
default:
return "unknown";
}
}
}Az ExceptionsFragment kódja pedig itt van. A notifyDatasetChanged() metódusát szeretném valahogy meghívni a MainActivity throwMeExcClicked(View) metódusban:
private static String makeFragmentName(int viewPagerId, int index) {
return "android:switcher:" + viewPagerId + ":" + index;
}
public void throwMeExcClicked(View view) {
Exception e = Exception.getRandomException();
synchronized (this) {
if (mLocation == null) {
setLocationExceptions.add(e);
} else {
e.setLocation(mLocation);
exceptionPreferences.addException(e);
}
}
String fragmentTag = makeFragmentName(R.id.pager, 1);
FragmentManager fragmentManager = getFragmentManager();
Fragment eFrag = fragmentManager.findFragmentByTag(fragmentTag);
// jó volna valahogy elérni az ExceptionsFragmentet!!!
} -
Karma
félisten
-
#39560925
törölt tag
-
Karma
félisten
Azért sípol, mert nem használod ki a ListView újrahasznosító mechanizmusát, hanem folyamatosan új Viewkat fújatsz fel. Feltételezem, a warning buborék két findViewById hívást takar.
A tökéletes megoldásnak két lépése van, ebből az első a kritikus.
1) Használd a convertView paramétert! Ha nem null, akkor az egy olyan cella, ami kicsúszott a képből és így nincs rá szükség. Ebben az esetben az új cella létrehozása teljesen felesleges, ezt a viewt kellene bekonfigurálnod az új adatokhoz, megspórolva a példányosítást és a GC-zést.
View rowView = convertView != null
? convertView
: LayoutInflater.from(parent.getContext()).inflate(R.layout.exc_row_layout, parent, false);2) A ViewHolder minta ehhez képest már apróság, a findViewById hívásokat lehet megspórolni vele. Egy olyan custom classról van szó, aminek tagváltozóiba elteszed a TextViewk referenciáit (tehát gyártott viewnként egyszer kell keresni), a holdert pedig beállítod Tagként a cellán. Ha a convertView nem null, akkor elkéred a tagből a holdert, és azonnal írhatod az új adatokat.
@Override
public View getView(int position, View convertView, ViewGroup parent) {
RowViewHolder viewHolder;
if (convertView == null) {
convertView = ... inflate ...;
viewHolder = new RowViewHolder(convertView);
convertView.setTag(viewHolder);
} else {
viewHolder = (RowViewHolder)convertView.getTag();
}
... values tömb ...
viewHolder.bindRow(values[position]);
return convertView;
}
... valahol lejjebb ...
private static class RowViewHolder {
private TextView nameView;
private TextView descView;
public RowViewHolder(View rowView) {
nameView = rowView.findViewById(...);
descView = rowView.findViewById(...);
}
public void bindRow(Exception model) {
nameView.setText(model.getName());
descView.setText(model.getDescription());
}
} -
#39560925
törölt tag
-
WonderCSabo
félisten
-
zeon.hu
nagyúr
használok E-robotot, ismerem.
a gond az, hogy voip telefonáláskor szeretném tiltani a bejövő gsm hívásokat, de mivel nem mtk soc, ezért nem megoldható sem a sim slot leválasztás, sem a gsm tiltás (nem találtam eddig működő megoldást). így voip közben a bejövő hívás mindenképpen fókuszba kerül,akkor is, ha tiltom/elutasítom automatikusan, viszont a voip kliensek fókuszból kikerülésekor több parancs is lefut, amiknek csak a valós hívás vége után kellene.
erre lenne megoldás a rep.mód, amit a robot ugyan megold voip hívás indításakor, vissza is kapcsolja a wifit, de elég lassú a folyamat (ugye előbb lekapcsol wifi, gsm, BT, majd wifi vissza).
Tamás, az E-robot fejlesztője se tud jobbat sajnos, a rep.módba nem tud kivételt tenni. -
Karma
félisten
Teljes mértékben egyetértek, írni is akartam a kérdés után közvetlenül, csak nem jött össze. Annyit tennék hozzá, hogy a Taskernek és az E-Robotnak saját topikja is van fórumon, így a kérdés azonnal felvethető ott.
-
fatal`
titán
-
#39560925
törölt tag
Akkor hová való az a gomb?
-
WonderCSabo
félisten
-
#39560925
törölt tag
Mi annak az oka, hogy a PreferencesActivity layoutja nem a layout mappában van megadva, hanem az xml-ben? Épp beállítások menüt csinálok, és egyelőre csak egy Facebook logout button-t akarok rátenni, de azt PreferenceScreen xml-be nem lehet betenni. Ezért írok egy normális Activity-t a beállításoknak, bár sejtem, hogy nem ez a konvencionális megoldás. De miért nem?
-
zeon.hu
nagyúr
Üdv!
Lehetséges lenne egy olyan applikáció megírása, ami repülőgép üzemmódba való kapcsoláskor a wifit nem kapcsolja ki ?
(Bejövő gsm hívásokat szeretném automatizálóval tiltani a wifi megtartása mellett. Van ugyan megoldás, de azt túl lassú folyamat. )
Ha lehet ilyet, megírni akkor se tudnám, de hátha valaki más
-
#39560925
törölt tag
-
sztanozs
veterán
Mármint az egész koncepciót nem értem. Ez valami vicces program lenne, vagy mi?
Milyen további funkciók lehetnek? Ha már vicces hibaüzenetek, az alábbi funkciókra biztos lehet valamit kitalálni:
- elemlámpa- geofencing
- wifi keresés
- mobil jel elvesztése
- touch műveletek (too many fingers ontouchscreenkeyboard error megvan?)
- adott program futása (túl sokáig, vagy túl sokszor)mod: Ja most látoma geofencing volt az eredetiben is...
-
#39560925
törölt tag
-
#39560925
törölt tag
Sziasztok!
Írni akarok egy primitív android appot. Alapötlet az, hogy facebook-kal beloginelsz, és exception-öket lehet a barátaidnak küldeni. Pl jelez az app, hogy "Nagy Béla sent you a ConstraintViolationException". Amire válaszolsz mondjuk egy OutOfMemoryExceptiont. Tennék bele olyat is, hogyha a felhasználó egy megadott földrajzi hely közelébe kerül, akkor kapjon egy exception-t az apptól. Így pl minden reggel a munkában indulhatna egy NullPointerException-nel.
Ide ezt azért írom, mert kellenének még ötletek, hogy minél több API-t használjak fel.
Új hozzászólás Aktív témák
-
3300 - 3201
5691 - 5601 5600 - 5501 5500 - 5401 5400 - 5301 5300 - 5201 5200 - 5101 5100 - 5001 5000 - 4901 4900 - 4801 4800 - 4701 4700 - 4601 4600 - 4501 4500 - 4401 4400 - 4301 4300 - 4201 4200 - 4101 4100 - 4001 4000 - 3901 3900 - 3801 3800 - 3701 3700 - 3601 3600 - 3501 3500 - 3401 3400 - 3301 3300 - 3201 3200 - 3101 3100 - 3001 3000 - 2901 2900 - 2801 2800 - 2701 2700 - 2601 2600 - 2501 2500 - 2401 2400 - 2301 2300 - 2201 2200 - 2101 2100 - 2001 2000 - 1
-
Fórumok
Mobilarena - mobil fórumok
Okostelefonok Mobiltelefonok Okosórák Autó+mobil Üzlet és Szolgáltatások Mobilalkalmazások Tartozékok, egyebek Mobilarena blogokPROHARDVER! - hardver fórumok
Notebookok TV & Audió Digitális fényképezés Alaplapok, chipsetek, memóriák Processzorok, tuning Hűtés, házak, tápok, modding Videokártyák Monitorok Adattárolás Multimédia, életmód, 3D nyomtatás Nyomtatók, szkennerek Tabletek, E-bookok PC, mini PC, barebone, szerver Beviteli eszközök Egyéb hardverek PROHARDVER! BlogokIT café - infotech fórumok
Infotech Hálózat, szolgáltatók OS, alkalmazások SzoftverfejlesztésGAMEPOD - játék fórumok
PC játékok Konzol játékok MobiljátékokLOGOUT - lépj ki, lépj be!
LOGOUT reakciók Monologoszféra FototrendFÁRADT GŐZ - közösségi tér szinte bármiről
Tudomány, oktatás Sport, életmód, utazás, egészség Kultúra, művészet, média Gazdaság, jog Technika, hobbi, otthon Társadalom, közélet Egyéb Lokál PROHARDVER! interaktív
- iPhone topik
- Vicces képek
- Visszatér a legendás trilógia? – Újabb Halo-remake-ek készülhetnek a háttérben
- Motoros topic
- Samsung Galaxy S26 Ultra - fontossági sorrend
- Formula-1
- Mikrotik routerek
- Hardcore café
- A fociról könnyedén, egy baráti társaságban
- Allegro vélemények - tapasztalatok
- További aktív témák...
- 100.000 ft tól elvihető RÉSZLETRE Lenovo Pro 7 16IRX9H 4090
- G.SKILL Trident Z5 Neo RGB 32GB (2x16GB) 6000MHz CL30 - Alza élettartam garancia
- Palit GeForce RTX 4070 Ti SUPER GamingPro OC WHITE 16GB - Alza garancia 2027.11.10 - BESZÁMÍTOK
- PowerColor Radeon RX 7900 XTX RED DEVIL OC 24GB - Garancia - BESZÁMÍTOK!
- Új, Gamer félgép - GIGABYTE B650 EAGLE AX + Ryzen 7 7800X3D + Corsair 2x16GB DDR5 6200MHz
- Gamer PC-Számítógép! Csere-Beszámítás! I7 9700 / RTX 3070 / 16GB DDR4 / 1TB SSD!
- ÁRGARANCIA! Épített KomPhone Ultra 9 285K 32/64GB RAM RTX 5070 Ti 16GB GAMER PC termékbeszámítással
- HP EliteBook 655 G10 15" Ryzen 5 PRO 7530U 32GB RAM Garancia 2028.02.27.
- BESZÁMÍTÁS! Asus X570 R7 5700 16GB DDR4 1TB SSD RTX 3060Ti 8GB be quiet! Pure Base 500 Chieftec 700W
- Samsung Galaxy S21FE / 6/128GB / Kártyafüggetlen / 12Hó Garancia
Állásajánlatok
Cég: Laptopműhely Bt.
Város: Budapest

(AS 1.3 elkélhet hozzá).




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





