Hirdetés

Keresés

Új hozzászólás Aktív témák

  • cigam
    titán

    Hello,
    Nagyon nagyon kezdő vagyok java ban.
    Kérdéseim:
    Meg lehet e java-val csinálni?
    Java e a legjobb választás hozzá?
    Hogyan kezdjek hozzá?
    Amit szeretnék:
    W11 alatt egy desktop organizer , mint a stardock fences, csak sokkal de sokkal kevesebb tudással.
    Mit tudjon: asztalon több lenyíló menü amiben indító ikonok vannak ha kinyitom és onnan indítom a programokat, vagy én zárom be, vagy magától össze csuk ha egeret máshová viszem. Asztal felső szélén vannak a menük egymás mellett. Ennyi.
    Nem kell semmi csicsa, se semmi.

    Tudom hogy vannak ilyen progik, de iszonyat drágák.
    Fences 3at anno megvettem, de w11 nem kompatibilis, még egyszer meg nem veszem.
    Vagy ami ingyenes azok nem tudják amiket írtam. Ezért gondoltam csinálok magamnak.

    Elég szép küldetés, de ha nulláról indulsz, bele fog törni a bicskád. Nem lehet hogy elég egy ingyenes alternatívát keresni? Vagy itt egy másik megoldás. Ha nem tudja amit szeretnél, hát módosítod a forráskódot. Egyszerűbbnek tűnik mint nulláról megírni egy ismeretlen nyelven. Általában mindenre van már kész program, csak gyakran nehezebb megtalálni, mint megírni egyet :)

    Plusz, ha jól tudom, az Asztal natív kezelése (pl. ikonok mozgatása, overlay ablakok) nem érhető el közvetlenül Java-ból

  • lanszelot
    addikt

    Hello,

    Esetleg ha ért valaki hozzá meg tudná mondani miért hibás a java kód? [link]

    context = LocaleHelper.setLocale(MainActivity.this, "en");
    Ezzel van gond a MainActivity -ben
    LocaleHelper -ben lévő LocaleHelper class belüli setLocale -t hívja meg, de
    olyan mintha a class nem lenne instantiate -va.
    LocaleHelper piros

    A gond az, hogy nem tudom hogy kell Android-ban instantiate -t csinálni.
    /nem tudom hogy van magyarul a instantiate , sose tanultam magyarul kódolni/

    btraven:
    ez nekem? Nem a java val van gondom. Az Androiddal. :)
    Mint a fenti példa is mutatja, java-ban tudom hogy kell csinálni, de Androidban nem úgy kell. Vagy hogyan lehet elérni ezt meg azt xml-ből java val.
    Hogy lehet egyik xml-t a másikba rakni..stb
    De sehol se kóddal csinálják, hanem manuálisan.
    Alig használják a java-t ,én meg csak azt szeretném.

    Sikerült megtalálnom a hibát.
    LocaleHelper .java file -ban véletlen töröltem egy betűt a package name -ből

    Ami érdekesség, hogy nincs instantiate .
    Amit nem értek, hogy hogyan.
    java tudáom szerint ez kellene:
    LocaleHelper localehelper = new LocaleHelper();

    Ha beírom ezt a sort, akkor nincs vele baja és azt a localehelper -t használja
    De ha nem írom be, úgy ahogy a linknél van, úgy is jó.

    A másik ami még szemet szúrt, hogy sokan if n-él nem használják a kapcsos zárójelet, és úgy is jó.
    pl:
    if(vmi)
    //code
    else
    //code

    Hogy pelda is legyen: 19:22 -nél [link]

  • bambano
    titán

    Hello,

    Esetleg ha ért valaki hozzá meg tudná mondani miért hibás a java kód? [link]

    context = LocaleHelper.setLocale(MainActivity.this, "en");
    Ezzel van gond a MainActivity -ben
    LocaleHelper -ben lévő LocaleHelper class belüli setLocale -t hívja meg, de
    olyan mintha a class nem lenne instantiate -va.
    LocaleHelper piros

    A gond az, hogy nem tudom hogy kell Android-ban instantiate -t csinálni.
    /nem tudom hogy van magyarul a instantiate , sose tanultam magyarul kódolni/

    btraven:
    ez nekem? Nem a java val van gondom. Az Androiddal. :)
    Mint a fenti példa is mutatja, java-ban tudom hogy kell csinálni, de Androidban nem úgy kell. Vagy hogyan lehet elérni ezt meg azt xml-ből java val.
    Hogy lehet egyik xml-t a másikba rakni..stb
    De sehol se kóddal csinálják, hanem manuálisan.
    Alig használják a java-t ,én meg csak azt szeretném.

    van en locale?
    en_US.UTF8 szokott lenni, vagy en_GB.UTF8

  • urandom0
    őstag

    Hello,

    Esetleg ha ért valaki hozzá meg tudná mondani miért hibás a java kód? [link]

    context = LocaleHelper.setLocale(MainActivity.this, "en");
    Ezzel van gond a MainActivity -ben
    LocaleHelper -ben lévő LocaleHelper class belüli setLocale -t hívja meg, de
    olyan mintha a class nem lenne instantiate -va.
    LocaleHelper piros

    A gond az, hogy nem tudom hogy kell Android-ban instantiate -t csinálni.
    /nem tudom hogy van magyarul a instantiate , sose tanultam magyarul kódolni/

    btraven:
    ez nekem? Nem a java val van gondom. Az Androiddal. :)
    Mint a fenti példa is mutatja, java-ban tudom hogy kell csinálni, de Androidban nem úgy kell. Vagy hogyan lehet elérni ezt meg azt xml-ből java val.
    Hogy lehet egyik xml-t a másikba rakni..stb
    De sehol se kóddal csinálják, hanem manuálisan.
    Alig használják a java-t ,én meg csak azt szeretném.

    Ez az xml-es bohóckodást én is utáltam Androidban. Sőt, az igazat megvallva, az egész Android fejlesztést utáltam elejétől a végéit. Van egy cikk ebben a témában angolul, ezt szoktam ajánlgatni: https://rmirabelle.medium.com/the-android-sdk-is-the-worst-thing-on-earth-c3aaebbd2e6d

    Százával vannak még hasonló írások: https://news.ycombinator.com/item?id=41062292
    https://news.ycombinator.com/item?id=40742719

    Aki ezt az xml-es faszkodást kitalálta, annak remélem külön bugyra van a pokolban. Lehet egyébként procedurálisan is csinálni az egészet, de ahhoz közel nulla dokumentáció van.
    Mondanám, hogy térj át inkább Kotlinra, és tanuld meg a Jetpack Compose-t, de csak akkor mondanám, ha rosszat akarnék neked (és ha nem tudnám, mi az a declarative UI nevű lázálom). Én azért hagytam abba az Android fejlesztést, mert egy tragédia az egész, elejétől a végéig.

    Csak egy dolgot mondok neked, ha egy framework doksijában olyanokat látsz, mint pl. hogy "less code", "intuitive", "it simplifies...", "makes it easy", akkor sovány vaddisznó vágtában menekülj onnan. Sőt, ha jót akarsz magadnak, a nagyvállalati cuccokat, úgy, ahogy vannak, kerüld el.

  • urandom0
    őstag

    Először is köszönöm szépen a választ.

    Igen, android. :)
    Sajnos az Android topik teljesen halott. Ezért itt kérdezgetek.

    Csak azért kérdezem, mert így az újra gomb rettentő sok soros method /és ez egy mini program/. Nem gond, de jó tudni, ha van rá egyszerűbb megoldás.

    Mindig tedd hozzá, hogy milyen platformon fejlesztesz, mert anélkül nem lehet pontos választ adni. Az Android processzkezelése egész más, mint mondjuk egy asztali Java alkalmazásé vagy egy Spring Boot appé, mert ugye Androidon intentekkel meg activitykkel kell játszani. Ott valami ilyesmi megoldást kell csinálnod (nem értek hozzá, én is csak úgy copyztam):

    Context ctx = getApplicationContext();
    PackageManager pm = ctx.getPackageManager();
    Intent intent = pm.getLaunchIntentForPackage(ctx.getPackageName());
    Intent mainIntent = Intent.makeRestartActivityTask(intent.getComponent());
    ctx.startActivity(mainIntent);
    Runtime.getRuntime().exit(0);

    Vagy ilyet:

    public static void triggerRebirth(Context context, Intent nextIntent) {
    Intent intent = new Intent(context, YourClass.class);
    intent.addFlags(FLAG_ACTIVITY_NEW_TASK);
    intent.putExtra(KEY_RESTART_INTENT, nextIntent);
    context.startActivity(intent);
    if (context instanceof Activity) {
    ((Activity) context).finish();
    }

    Runtime.getRuntime().exit(0);
    }

    De lényegében ez is arról szól, hogy új processzként elindítod saját magad, magadból pedig kilépsz, és az új processz pedig fut tovább.

  • urandom0
    őstag

    Hello,
    Java ban ha lefutott a program és újra gombbal elölről akarom futtatni azt tudom, hogy mindent egyesével alapba állítok egy method-al.
    Az érdekelne van e egyszerűbb mód?
    JS-ben pl location reload, csak azért írtam példát, hogy érthető legyen mit szeretnék.

    Android? Ha igen, akkor az Android topikban kellene feltenni a kérdést, mert ott más megoldás kell (újrahívni az intentet, vagy nem tudom, nem értek hozzá).

    Ha asztali program, akkor több lehetőség is van, pl. ProcessBuilder-rel elindítasz egy új példányt a programodból, a jelenlegiből pedig kilépsz System.exit()-tel. Vagy a Runtime.getRuntime().exec() metódussal indítasz egy új példány, és kilépsz a jelenlegiből.
    Vagy ha kicsit softosabb újraindítás kell, akkor csinálhatod azt, hogy a main() metóduson belül egy másik metódusba (pl. launch) rakod a programod lényegi részét, és ezt a metódust bármikor újra tudod hívni.
    De végső soron visszaállíthatsz mindent alapra egy metódussal, de ezzel kapcsolatban nekem vannak kétségeim, elég könnyű hibázni, főleg, ha vannak statikus metódusaid is.

    Nyilván a konkrét megvalósítás erősen függ attól, hogy pontosan mit és hogyan csinál a programod.

  • hoopy
    csendes tag

    Köszönöm szépen a választ.

    Nem segített. Minden ugyanúgy inaktív.
    Ha vissza nezel a fent említett poszthoz, ott láthatod, hogy volt debugging, csak eltűnt.
    Ugyanennél a projectnél volt, semmit se módosítottam.

    Más:
    Ebben tudna valaki segíteni miért 12?
    4 -es - counter 2, hogy lép be a counter 3-as feltételnél?
    Azt hittem nem nullázódik, de nullázódik, és 2-es az értéke.
    [link]

    i = 5 körben:
    counter = 0
    5 = cars[j] három esetben teljesül ezért counter = 3
    j = 2,3,4
    Ebből jön hogy 4*3 = 12

  • urandom0
    őstag

    itt egy video, hogy nincs debugging: [link]
    Pedig volt: #12125 képen látszik

    Ha itt is azt fogod csinálni, mint a PHP-s topikban, elég hamar kiidegeled a népet :D

    Ezt figyelmesen, alaposan olvasd át:
    https://developer.android.com/studio/debug/index.html

    Szerintem a Attach the debugger to a running app rész kell neked, ott csúszhatott el a dolog.

  • lanszelot
    addikt

    Hello,

    Bocsánat, hogy megint off topikot írok, de megőrjít az Android Studio bug-jai.
    Most pl eltűnt a debug.
    Hiába nyomok a debug-ra, elinditja a programot és ennyi.
    Nincs lent a debugging window.
    Ha ki is nyitom , semmit se ér.
    A változók értékeit nem mutatja.
    Minden szürke. Csak a pause gomb aktiv.
    Ha rá nyomok, akkor a "MessageQueue.java" nyílik meg.
    Eddig jól működött, de gondolt egyet és nem működik.
    Újra indítottam a gépet, nem segít.

    itt egy video, hogy nincs debugging: [link]
    Pedig volt: #12125 képen látszik

  • Sirpi
    senior tag

    Hello,

    452 sor : 5 + 5 miért 0 ?

    0-val inicializálod, aztán nem nyúlsz hozzá többet. Az lenne fura, ha nem 0 lenne.

  • axioma
    veterán

    Hello,

    452 sor : 5 + 5 miért 0 ?

    egyparKetto != egyparOsszegKetto
    mas valtozot adsz hozza mint amit hiszel
    ja nem, csak siman felulcsapod az egyparOsszegKetto-vel

  • Ablakos
    addikt

    Az, hogy valaki megír helyettem dolgokat, és én azt sajátként adom el, az kis kapu.
    Én hobbiból csinálom. Teljesen más a célom mint pl neked. :)
    Ezért nem értesz. Illetve ezen felül én más szempontból is teljesen más vagyok mint az átlag.
    Ezek miatt teljesen félre érted a dolgokat. Amit megértek, és semmi gond. :)
    Megpróbálom elmagyarázni:
    Van aki vesz egy modell készletet, és profi módon gyönyörűen össze rakja, festi stb és a végeredmény kiállításra kerül.
    És van aki vesz pár gyufát, kiborítja, vagdal, ragasztgat, és ha kész kirakja a polcra, amit csak a család lát. Nem profi munka, és nem bámulják millióan, de más volt a cél.
    Ha a gyufás srác a profitól kérdez a neten a profi a nem fogja érteni hogy miért nem hallgatja meg a műanyag ragasztásáról.
    Meghallgatta, csak neki nem kell műanyag, se airbrush. :)
    Bocsánat a bugyuta magyarázatért :B

    A github oldalon rengeteg project van, amelyeket csak be kell húzni az android studióba. Azokból (főleg az egyszerűbbekből) nagyon sokat lehet tanulni kezdőként. A semmiből alkotni elég nehézkes és sok a kudarc. (A művészet is az utánzással kezdődik.)

  • hoopy
    csendes tag

    Először is köszönöm szépen a választ.

    Te kotlin-ról írtál.
    Én java -t használok. Azért is írok ide.

    Azért írtam Android Studio -t, mert ez a java topik.
    Csak java-val nem lehet animálni.
    Azért dobtam css linket, hogy mit értek animálás alatt.
    Mert az lett volna a kérdés, hogy mit értek animálás alatt.

    PWA nem érdekel. Se AI se semmi más.
    Android Studio és java, ennyi.

    Gradle Scripts - build.gradle(module.app) /implementation/
    Ide 2 sort beszúrva már lehet, ezt is tudom.
    De nem tudom az hogy működik.
    Kell e majd az app nak net, ha oda bemásolom a 2 sort.

    Vagy animated vector drawable-t készítek. És maga a kép animált.

    Az érdekelne, hogy csak Android Studio / java lehet -e animálni elemeket. Vagy mindenképp kiskapu kell?

    Te Android fejlesztés specifikus kérdéseket tettél fel most, nem java-st. Androidra pedig már a Google szerint a kotlin first az irányelv. Amúgy 1-1ben alakítható a java-kotlin ide-oda. De továbbra is csak egy nyelv, teljesen mindegy milyen nyelven írod a natív alkalmazásod, főleg mert a linkelt videó xml alapú anim resourceok használatát mutatja be.

    Szerintem egyáltalán nem érted és nem is akarod érteni a mögöttes dolgait annak amit csinálsz, így pedig nehéz segíteni. Másképp nem írnál ilyet, hogy "kiskapu".
    Amúgy lehet csak pure Java-val is. Csinálsz egy CustomView-t és annak az onDraw metódusában azt rajzolsz ami jól esik.
    Ha ilyet akarsz, akkor javaslom, hogy az alap OO programozás könyvek mellé egy Számítógépes grafika könyvet is tolj végig.

  • hoopy
    csendes tag

    Hello,
    Ha valaki használ Android Studio -t kérem segítsen már.
    Hogyan lehet animációt hozzá adni egy elemhez?
    Pl egy kép 2szer megforduljon gombnyomáskor.
    Itt egy példa css-ben hogy kell: [link]
    No de Androidban hogy kell? Sehol se találom.
    Azért css mert nem tudom elmagyarázni , így egyszerűbb.

    Hello,

    Nem android studio specifikus, az csak egy IDE.
    XML-ben is van amit tudsz animálni, de ha ilyen egyedi rajzolást szeretnél, akkor canvas-re kell rajzolnod és ott megoldani.

    Ne is hasonlítsd a CSS-hez, ami a webes világban van. Ha amúgy csak ennyi a célod, akkor jobban jársz egy PWA-val androidra, mert azt írhatod tetszőleges webes toolokkal és lényegében egy weboldal aminek van ikonja a launcheren.

    Továbbra is javaslom, hogy az alapokat értsd meg programozásból. Amúgy Google első találat: https://www.youtube.com/watch?v=8rF_8wIrpL4

  • fatal`
    titán

    Először is köszönöm szépen a választ.

    Ez így teljesen más.
    Nekem változók értékét kell megváltoztatni a methodon belül.
    De nem "egy" kerül be, hanem vagy "egy", vagy "ket", vagy "har"

    Tehát a te példádban a method-nak semmi értelme, mert ha tudom mi változik, akkor
    egy = true;
    És kész is.

    No de nem tudom hogy melyik valtozik.
    Azt a methodban beadott parameter tudja.
    Methodban létrehozott switch -el meg lehet oldani.
    Ezt is tudom.
    "if" -el is meg lehet oldani.

    De nem egyszerűbb ha parameterel viszembe és akkor tudom a methodon belül, hogy melyik változik, és nem kell switch vagy if.

    Tehát tudom, hogyan oldjam meg. Method helyett copy paste is megoldás.
    De most tanulom, és most kell megértenem hogyan lehet hatékonyan használni.

    A nyelvet szoknom kell. Rá kell álnom a gondolat menetére, hogyan gondolkodjak java-ban. Más nyelvben masként kell gondolkodni. De ezt csak a gyakorlás adja majd meg.
    Sok sok gyakorlás. :)

    Nem a nyelv dönti el, az csak egy eszköz.

    Ahogy fentebb is írták, olvass el legalább 1-2 programozás alapjairól szóló cikket vagy könyvet, vagy nézz meg 1-2 tananyagot.

  • hoopy
    csendes tag

    Hello,
    A method-ban az "f" parameter, és a mthod-ban az "f" nem ugyanaz.
    tehát "egy" nem lesz true.
    Hogyan kell ezt helyesen ?

    boolean egy = false;
    boolean ket = false;
    boolean har = false;

    myMethod(egy);

    public void myMethod(boolean f){
    f = true;
    }

    Értéket adsz át primitív típusoknál (int, boolean, double, stb) nem referenciát, szóval ez így nem fog működni. Fogalmam nincs, hogy körülötte mi van, nyilván van sokféle megoldás OO/wrapper esetben, de ha csak egy rövid scriptként nézzük akkor ez csinálja azt amit szeretnél. Sok értelme mondjuk nincs.

    boolean egy = false;
    egy = myMethod();
    public boolean myMethod(){    
       return true;
    }

    Amúgy javaslom, hogy legalább olvass el 1-2 programozás alapjai cikket vagy könyvet, mert az oké, hogy nem érted az specifikus android vagy mélyebb tudást igénylő dolgokat, de itt az alapokkal is gondok vannak, úgy pedig nagyon nehéz haladni.
    Vagy ha más nem, akkor másold be chatgpt-be mondjuk és kérd meg h magyarázza el a kódot vagy írd meg neki mit szeretnél.

  • lanszelot
    addikt

    Először is köszönöm szépen a választ.

    A scope miatt nem tudom kintebb rakni.

    Ami fura nekem, ha létre hozok egy üres projektet, abba létre tudok ott hozni saját method-ot.
    De a projekten amin dolgozom ott nem.
    Nem értem miért.
    Mi történt a projektemben, hogy nem engedi? :F
    #12100 posztomban ott a project.

    Hello

    Sikerült megoldani:
    Az egész "setOnCheckedChangeListener" -t be kellett raknom a methodomba.
    Én csak a benne lévő "if" -et próbálgattam, de úgy nem lehet, és ez volt a gond.
    Már semmi ötletem nem volt, és gondoltam mit veszíthetek, ha megpróbálom az egészet bele rakni, és így működik :)

  • lanszelot
    addikt

    Először is köszönöm szépen a választ.

    A scope miatt nem tudom kintebb rakni.

    Ami fura nekem, ha létre hozok egy üres projektet, abba létre tudok ott hozni saját method-ot.
    De a projekten amin dolgozom ott nem.
    Nem értem miért.
    Mi történt a projektemben, hogy nem engedi? :F
    #12100 posztomban ott a project.

    Tegnap létre tudtam hozni az üres projektben a methodot, ma már nem.
    Tehát sehogy se tudom létrehozni onCreate-ben.

    Na, mindegy copy paste -val megcsinálom.
    Ugyanaz , csak sokkal hosszabb lesz a kód.

  • hoopy
    csendes tag

    Hello,
    Minden projectben létre jön egy main java class
    Azon belül van az "on create" method.
    @Override
    protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    EdgeToEdge.enable(this);
    setContentView(R.layout.activity_main);
    ViewCompat.setOnApplyWindowInsetsListener(findViewById(R.id.main), (v, insets) -> {
    Insets systemBars = insets.getInsets(WindowInsetsCompat.Type.systemBars());
    v.setPadding(systemBars.left, systemBars.top, systemBars.right, systemBars.bottom);
    return insets;
    });

    On create method -on belül hogyan tudok saját methodot létrehozni?
    public void yourmethod(){
    // your code here
    }

    Így nem lehet, pirossal alá van húzva, és az ajánlat csak delete.

    Hello,

    Ötletem sincs miért akarod inner methodnak. Simán tedd egy szintre az onCreate-tel és hívhatod az osztályban bárhol this.yourmethod()-dal.

    Amúgy van megoldás arra is amit szeretnél, lambda, anonymus vagy local class kifejezésekkel találsz rá megoldást. De Java-ban ez nem egy követendő irány, mint néhány funkcionális nyelvben. (pl Python).

  • axioma
    veterán

    Először is köszönöm szépen a segítséget.

    Így én bis tudom, csak az úgy nem jó.
    Ahol létrehozzon ott még nincs imageView1-5
    Tehát ott nem tehetem bele.
    Csak ott tehetem bele ahol már léteznek.
    Azt írtad ott kint hozzam létre, azért tettem oda ki.
    Viszont én nem tudom, és nem találtam, hogy lehet egybe hozzá adni az elemeket. Ezért kérdeztem.

    A tipus az ImageView, nem View.
    Így tanultam, és mindenhol így is van.
    TextViewnek is TextView és nem View.
    És minden tipusnak önmagát adják meg.
    Kezdő vagyok, így lehet, hogy lehet másképp, de össze zavar és inkább úgy csinálom ahogy tanultam. :B

    Nezd, en elvet adtam at, nem megoldast. Igy lehet az elozo kerdesedben szereplo ertekadast [letrehozassal egyutt] megoldani. Egy tipust csak at tudsz irni... mobilrol ket masik tennivalo kozott ezt tudtam beszurni.
    Visszanezve az elozmenyeket, az imageviewx-ek letrehozasat lehet ugy meguszni, h ahol most az imageview1 = stb sorok vannak, oda azt irod h ImageView[] viewNr= new ImageView[5];
    viewNr[0]=findViewById(R.id.Egyes);
    <stb>

    es utana csak a tombbol hasznalod oket csak.

  • axioma
    veterán

    Hello,
    Azóta azt próbálom megtalálni, hogyan kell ezt
    viewNr[0] = imageView1;
    viewNr[1] = imageView2;
    viewNr[2] = imageView3;
    viewNr[3] = imageView4;
    viewNr[4] = imageView5;

    Egy sorban hozzá adni.

    View[] viewNr= new View[]{imageView1, ...};
    A tipust javitsd ki.

  • axioma
    veterán

    Switch - valóban :R Azt el is kezdtem átnézni kell e még, de jött a postás, és huss elfelejtettem :B

    viewNr scope miatt. Az imageView nem érhető el kintről.

    For ciklus nem lesz. Egyesével lesznek meghivva if -hez kötve, többször, többféleképpen.
    Emiatt lehet kell majd a randSzam, így nem nyúltam hozzá.

    imageView1 =... ahol most van neked, oda tennem a tomb deklaraciot es kozvetlen kitolteset, az onclick meg csak hasznalja
    [nem is nez ki jol, h minden onclick csinal egy pont ugyanolyan tombot - bar nyilvan konkretan itt nem rontja el a performanciat...]

  • axioma
    veterán

    de nem int-et adtam meg.
    one, two, three, four, five - ezek az id-k amiket megadtam.

    itt a progi.
    Persze nem így lesz, csak most for -al csináltam, hogy azt is gyakoroljam.
    De a for nem jó, for helyett method kell nekem majd.
    ImageView viewNr[] = new ImageView[5];
    int imgId[] = new int[]{R.drawable.one, R.drawable.two, R.drawable.three, R.drawable.four, R.drawable.five, R.drawable.six};

    public void kockaAkcio(int v, int r){
    switch(r) {
    case 0:
    viewNr[v].setImageResource(imgId[0]);
    break;
    case 1:
    viewNr[v].setImageResource(imgId[1]);
    break;
    case 2:
    viewNr[v].setImageResource(imgId[2]);
    break;
    case 3:
    viewNr[v].setImageResource(imgId[3]);
    break;
    case 4:
    viewNr[v].setImageResource(imgId[4]);
    break;
    case 5:
    viewNr[v].setImageResource(imgId[5]);
    break;
    }
    }

    @Override
    protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    EdgeToEdge.enable(this);
    setContentView(R.layout.activity_main);
    ViewCompat.setOnApplyWindowInsetsListener(findViewById(R.id.main), (v, insets) -> {
    Insets systemBars = insets.getInsets(WindowInsetsCompat.Type.systemBars());
    v.setPadding(systemBars.left, systemBars.top, systemBars.right, systemBars.bottom);
    return insets;

    });

    Random random = new Random();
    ImageView imageView1 = findViewById(R.id.Egyes);
    ImageView imageView2 = findViewById(R.id.Kettes);
    ImageView imageView3 = findViewById(R.id.Harmas);
    ImageView imageView4 = findViewById(R.id.Negyes);
    ImageView imageView5 = findViewById(R.id.Otos);
    Button button01 = findViewById(R.id.Dobas);

    button01.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {

    int[] kockak = new int[5];

    int randSzam = random.nextInt(5);

    //itt hozom letre a kepek helyenek a valtozot es tombbe rakom tombben
    viewNr[0] = imageView1;
    viewNr[1] = imageView2;
    viewNr[2] = imageView3;
    viewNr[3] = imageView4;
    viewNr[4] = imageView5;

    for (int i =0; i<5; i++){
    randSzam = random.nextInt(5);
    //itt rakom be a dobast
    kockak[i] = randSzam;
    //itt hivom a methodot
    kockaAkcio(i, randSzam);
    }

    }


    });
    }

    Jaaa, akkor felreertettelek. OK, nevezzuk imageNumber-nek, az imageId az alfanumerikusra utal inkabb.
    Szoval az altalad "one" id-val ellatott resource-hoz az R resource class hozzarendelt egy imageNumber-t, ami int, es ezt tarolja az R.drawable.one alatt. Igy mar talan ertheto.

    A teljes switch elhagyhato. Az ertelme annyi, mintha a teljes switch(r) {...} helyett azt irnad, hogy viewNr[v].setImageRescource(imgId[r])
    (mondjuk nincs default agad, igy annyi kulonbseg azert van, hogy ha a v nem [0..5], akkor a switch lefut csak semmit nem allit be, az egysoros meg hibat ad)

    Van tobb aprosag amit lehetne me'g javitani. Pl. a viewNr letrehozas miert kerult be a listenerbe, es miert ket lepesben kap erteket?
    ImageView imageView1 = findViewById(R.id.Egyes);
    viewNr[0] = imageView1;
    ehelyett
    viewNr[0] = findViewById(R.id.Egyes);

    A randszam feleslegesen van inicializalva randomra, azt nem hasznalod, felulirja a for ciklusban - ez gondot nem okoz csak kod-olvashatosagot, mire gondolhatott a kolto alapon...

  • axioma
    veterán

    Hello,
    Nem a rendszer rendelt hozza azonosítót. Én adtam neki.
    Úgy mint a html-ben az id. Majd JS alól hivatkozok rá.
    Itt pedig java alatt hivatkozom rá.

    Reszletkerdes, azert gondoltam hogy automatikusan tortent, mert csodalkoztal rajta, hogy az egy int...

  • axioma
    veterán

    Nagyon szépen köszönöm a segítséget.

    Így sikerült:
    ImageView viewNr = imageView1;
    int imgId = R.drawable.one;
    viewNr.setImageResource(imgId);

    Így már be tudom rakni for ciklusba, tömbbe, method-ba.

    Viszont ezzel teljesen felborul az adat tipusok.
    Mivel ebben az esetben int nem egész szám.
    Ha viszont azt nézem hogyan használja, akkor minden boolean, mert a cpu 0 és 1 -eseket értelmez.
    Tehát nem értem hogy int a String, ami nincs idézőjelben.

    Milyen ertelemben nem egesz szam? az egy egesz, pontosabban az adott nyelv int-je (az egeszek egy reszhalmaza) - a rendszer hozzarendelt ahhoz a megadott (kephez, ha jol ertem) egy azonositot, amit ezentul az R.drawable.one uton ersz el. Ha egy masik eleme't erned el a resource osztalynak, akkor annak (jo esellyel) mas tipusa lenne.

    Amugy ha most kezd mar osszeallni, akkor tekintsd meg a switch-edet. A dobas 0-5 kimenetelehez rendelsz egy masik szamot, amit elore tudsz. Tehat az egesz kicserelheto arra, hogy csak indexeled oket egy elemeivel definialt tombben:
    int[] imageIds = new int[] {R.drawable.one, R.drawable.two... };
    randszam = ...;
    viewNr.setImageResource(imageIds[randszam]);

    Igy meg kulon fuggveny se fog kelleni.

  • axioma
    veterán

    Először is köszönöm szépen a választ mindenkinek.

    Azt láttam hogy int -et kér.
    De ez "R.drawable.one" hogy int?
    Int az egész szám.
    Az meg String. Az a kép ID megadása. Az id "one" az is string.

    Most nagyon meg vagyok kavarodva.
    Nem tudom hogy adhatok int -et.

    hoopy: este ha haza érek megpróbálom.

    hogy int: hat az int x =5; utan az x is int... de amugy 1. ott az ide, menj az utolso tag [one] fole, nem jon fel buborekban, h mi az? 2. log-old ki az erteket
    az R.drawable.one _nem_ string, egy azonosito [ok, egyszerusitve], nem egyezik az "R.drawable.one" stringgel. Igen, backend-es voltam vilag eletemben de hallottam hiret hogy frontend egyes technologiaiban ez csiki-csuki... itt nem [ill. kerulendo, mint korabban angolul is, meg tolem is elhangzott].
    csinalj csak ennyit:
    int imageId = R.drawable.one;
    imageView1.setImageResource(imageId);
    Ha ez elfut, akkor menjunk tovabb. Ha nem, hibauzenetet mutasd.
    [az termeszetesen _nem_ varhato, hogy az imageId -nak barmi koze lesz a 'one'-hoz, lehet h csak nemletezo id-val probaltad, az id nem feltetlen folytonos, sot, az inkabb index nevet kapna]

  • hoopy
    csendes tag

    Biztonság kedvéért kipróbáltam, de egyik se működik.
    Vagy én csinálok valami hülyeséget, vagy nagyon rosszul mondom el.

    imageView1.setImageResource(R.drawable.one);
    Ez a sor szent és sérthetetlen.
    Semmit se lehet benne változtatni.
    Nem használhatok változót, se kikérést, se függvényt, semmit.
    imageView1.setImageResource(myFunc())
    Tehát ez nem működik. /myFunc()/
    Az "R.drawable.ID" -nek kell ott lenni. Semmi mást nem fogad el.
    Igen, létre hoztam a method-ot returnnal ami azt a sort adja vissza. Próbáltam rengetegféle képpen, de nem.

    Vagy nem így kell beírni. Lehet össze kell fűzni.
    Php-ban ponttal fűzöm össze, JavaScript -ben +. -erre gondolok.
    Tudom, hogy html-t js-el, de nem fogad el semmit.
    Valahogy másképp kell.

    Az setImageResource(int) metódusba be tudsz írni egy olyan függvényt, aminek a visszatérési értéke int.
    Nem néztem végig a teljes kódod, de valami ilyesmi fog kelleni neked:

    public void setImageResourceBasedOnValue(ImageView imageView, int value) {
      imageView.setImageResource(getDrawable(value));
    }

    private int getDrawable(int value) {
      switch (resourceId) {
            case 0:
              return R.drawable.one;
            case 1:
                return R.drawable.two;
            default:
              return R.drawable.three;
        }
    }

  • axioma
    veterán

    Biztonság kedvéért kipróbáltam, de egyik se működik.
    Vagy én csinálok valami hülyeséget, vagy nagyon rosszul mondom el.

    imageView1.setImageResource(R.drawable.one);
    Ez a sor szent és sérthetetlen.
    Semmit se lehet benne változtatni.
    Nem használhatok változót, se kikérést, se függvényt, semmit.
    imageView1.setImageResource(myFunc())
    Tehát ez nem működik. /myFunc()/
    Az "R.drawable.ID" -nek kell ott lenni. Semmi mást nem fogad el.
    Igen, létre hoztam a method-ot returnnal ami azt a sort adja vissza. Próbáltam rengetegféle képpen, de nem.

    Vagy nem így kell beírni. Lehet össze kell fűzni.
    Php-ban ponttal fűzöm össze, JavaScript -ben +. -erre gondolok.
    Tudom, hogy html-t js-el, de nem fogad el semmit.
    Valahogy másképp kell.

    En nem vagyok androidos fejleszto, igy altalanossagban (es szerkezeteben) probaltam segiteni. Most rakerestem, ez a fuggveny ennyi:
    public void setImageResource (int resId)
    Ez azt jelenti, hogy nalad is int lett a myFunc() visszateresi tipusa?

  • axioma
    veterán

    Először is köszönöm szépen a segítséget.

    Folyamatosan agyalok azon amit írtál.
    Van pár dolog amit nem értek.
    Nagyon kezdő vagyok valószínűleg azért.

    fg - ez nem tudom mi. Függvényre gondolnék, de én nem tudok java-ban függvényéről. Method és class -ról tudok csak.

    Map az miért lenne jó?
    Map az érték párok bevitele, módosítása stb -re jó.
    Nekem fix értékek vannak amik sohase változnak, és sohase kell hozzáadni. Minden fix.
    Akkor miért lenne jó a map?

    a fuggveny/eljaras es ezek angol neve attol fugg, ki mikor es melyik nyelven szocializalodott a programozasba :) igen, method-ra gondoltam

    Amit az angol nyelvuben irnak, az ket dolog.
    1. meg lehet oldani elvben amit elsore lekodoltal (azaz a string alapjan "kiertelmezve" elkerni az objektumot), de nagyon antipattern, tehat azt az iranyt el se kezdtem
    2. map-et meg ugy akart, hogy helyette van egy fix map-ed, ami a "one" stringhez hozzarendeli az R.drawable.one objektumot stb, es attol kered el
    (de ha kicsit tavolabbrol nezed a kodot, ez a 0-hoz rendeled az obj-ot modon is hasznalhato, az meg csak egy indexeles egy tombben - ide gondoltam hogy idovel eljutunk, csak kisebb lepesekkel)

  • axioma
    veterán

    Nagyon szépen köszönöm a segítseget.

    Sajnos nincs semmi ami ismétlődne.
    public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    EdgeToEdge.enable(this);
    setContentView(R.layout.activity_main);
    ViewCompat.setOnApplyWindowInsetsListener(findViewById(R.id.main), (v, insets) -> {
    Insets systemBars = insets.getInsets(WindowInsetsCompat.Type.systemBars());
    v.setPadding(systemBars.left, systemBars.top, systemBars.right, systemBars.bottom);
    return insets;

    });

    Random random = new Random();
    ImageView imageView1 = findViewById(R.id.Egyes);
    ImageView imageView2 = findViewById(R.id.Kettes);
    ImageView imageView3 = findViewById(R.id.Harmas);
    ImageView imageView4 = findViewById(R.id.Negyes);
    ImageView imageView5 = findViewById(R.id.Otos);
    Button button01 = findViewById(R.id.Dobas);

    button01.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {

    int[] kockak = new int[5];

    //elso kocka
    int randSzam = random.nextInt(5);
    kockak[0] = randSzam;

    switch(randSzam) {
    case 0:
    imageView1.setImageResource(R.drawable.one);
    break;
    case 1:
    imageView1.setImageResource(R.drawable.two);
    break;
    case 2:
    imageView1.setImageResource(R.drawable.three);
    break;
    case 3:
    imageView1.setImageResource(R.drawable.four);
    break;
    case 4:
    imageView1.setImageResource(R.drawable.five);
    break;
    case 5:
    imageView1.setImageResource(R.drawable.six);
    break;
    }

    //masodik kocka
    randSzam = random.nextInt(5);
    kockak[1] = randSzam;

    switch(randSzam) {
    case 0:
    imageView2.setImageResource(R.drawable.one);
    break;
    case 1:
    imageView2.setImageResource(R.drawable.two);
    break;
    case 2:
    imageView2.setImageResource(R.drawable.three);
    break;
    case 3:
    imageView2.setImageResource(R.drawable.four);
    break;
    case 4:
    imageView2.setImageResource(R.drawable.five);
    break;
    case 5:
    imageView2.setImageResource(R.drawable.six);
    break;
    }

    //harmadik kocka
    randSzam = random.nextInt(5);
    kockak[2] = randSzam;

    switch(randSzam) {
    case 0:
    imageView3.setImageResource(R.drawable.one);
    break;
    case 1:
    imageView3.setImageResource(R.drawable.two);
    break;
    case 2:
    imageView3.setImageResource(R.drawable.three);
    break;
    case 3:
    imageView3.setImageResource(R.drawable.four);
    break;
    case 4:
    imageView3.setImageResource(R.drawable.five);
    break;
    case 5:
    imageView3.setImageResource(R.drawable.six);
    break;
    }

    //negyedik kocka
    randSzam = random.nextInt(5);
    kockak[3] = randSzam;

    switch(randSzam) {
    case 0:
    imageView4.setImageResource(R.drawable.one);
    break;
    case 1:
    imageView4.setImageResource(R.drawable.two);
    break;
    case 2:
    imageView4.setImageResource(R.drawable.three);
    break;
    case 3:
    imageView4.setImageResource(R.drawable.four);
    break;
    case 4:
    imageView4.setImageResource(R.drawable.five);
    break;
    case 5:
    imageView4.setImageResource(R.drawable.six);
    break;
    }

    //otodik kocka
    randSzam = random.nextInt(5);
    kockak[4] = randSzam;

    switch(randSzam) {
    case 0:
    imageView5.setImageResource(R.drawable.one);
    break;
    case 1:
    imageView5.setImageResource(R.drawable.two);
    break;
    case 2:
    imageView5.setImageResource(R.drawable.three);
    break;
    case 3:
    imageView5.setImageResource(R.drawable.four);
    break;
    case 4:
    imageView5.setImageResource(R.drawable.five);
    break;
    case 5:
    imageView5.setImageResource(R.drawable.six);
    break;
    }
    }
    });
    }
    }

    Másik fórumon ezt írták, de egy szót sem értek belőle /nem az angol miatt/
    "Do you want to have a dynamic drawable resource ID? If yes, there is a way to get the ID by the resource name. However, I strongly suggest you think carefully before taking this path. Having a map where you associate static resource IDs with another value might be better."

    ne a switch-ben set-eld csak a szamBetuvel mintajara egy objektumnak adj erteket ja egybol return jobb
    fg-ben az int randszam-tol csak
    case 0: return R.drawable.one;
    stilus, majd foprog-ban:
    imageView1.setImageResource(myFunc());
    ...
    imageView5.set...

    A map hasznalata me'g korai, ezt bogozd ki es ertsd meg elobb, aztan ki lehet a switch-et o[timalizalni ahogy emlitettem..

    [megj. lehet olyat is h forditva, a fg parametere h imageViewN, es annak allitod a switch-ben, de ott me'g kene elobb egy ertek v ref. szerinti atadas gyostalpalo, maradj az egyszerubben programozhatonal]

  • axioma
    veterán

    Pont ez a bajom, hogy nem tudom se függvényében, se for ciklusba tenni.
    Mert nem pontosan ugyanazt kell végrehajtani.
    Az "imageView" - t és az ID -t is módosítani kell.
    De nem tudom, mert se paramétert, se változót nem tudok beletenni.

    Többel is ugyanaz, kikérést se tudok bele tenni.
    Nem tudom hogyan kell.

    azt emeled ki fg-be ami ugyanaz lenne
    irdd meg 2-re a 'hosszut'
    ami egyforma [szam kitalalas, szambol object switch] az s fg, visszaadja az objektumot, te meg 5x hivod 5 valtozoba setImageResource-olva az eredmenyt [a parameter maga egy fg-hivas]
    ha elakadsz, szurd be hogy allsz ne csak meta-beszelgessunk rola

  • axioma
    veterán

    Ez jó lenne, de ebben az esetben iszonyat hosszú kódot kell írnom.

    Generálok egy szamot,
    Switch berakja imageView1 -esbe
    Majd
    Generálok egy számot
    Switch berakja imageView2-esbe
    Stb
    Mindent 5ször ismétlek.

    Mint ahogy írtad, majd a végén azt szeretném, hogy for ciklus végig szalad rajta.
    De még tanulom, így igaz, hogy ez megoldás, de nem tanulok.
    Nem tudom hogy tudok oda változót berakni.
    Azért van tömbből a változó, hogy majd tovább haladhassak a tanulással.

    Elnézést, hogy kuszán írok. Még kezdő vagyok.

    ez ketfelekeppen is meguszhato
    1. a kivalasztast megirod fuggvenyben, nem kodmasolas
    2. androidot sose csinaltam, de az imageView-k nem lehetne szamozott valyozok helyett eleve tomb? ha nem, tedd tombbe... es ahhoz adj hozza

  • axioma
    veterán

    Ennyi a kód.

    Tanulok. Hogyan lehet változót használni ahelyett hogy én írom be.
    Random generál egy számot 0-5 között.
    Switch ezt a vectror image nevére át váltja.
    Beilleszti az imageView-ba.
    Telefonon megjelenik a kép.
    Kész.
    Semmit se csinál.

    Még csak most tanulom. Az én agyam nem úgy működik mint az atlagé. Nekem így kell tanulnom.
    Tudom fura másoknak. :B

    nem jo az elkepzeles [szam->nev->obj]
    miert nem a switch csinal obj-ot? az ne szamBetuvel lehyen, hanem az R.drawable.one tipusaval legyen egy valtozod, es annak adj a switch-ben a szamtol fuggo erteket
    [advanced megoldas: tomb beloluk es csak indexeled]

  • axioma
    veterán

    Először is köszönöm szépen a választ.

    71 es sor - "cannot resolve symbol 'kockak' " hibát dob
    Gondolom azért mert idézőjelben rakja be:
    "four" nem pedig four.
    De ezt csak gondolom.

    For ciklus azért nem jó, mert "imageView" 1-5 ig van, tehát a végén a számot változtatnom kellene, de azt se tudom hogy kell.
    Csak azzal már nem akartam bővíteni a kérdéseim számát.

    69 sor már nem dob hibát, hogy adtam alap értéket.
    Azt sikerült javítani.
    "" Értéket adtam a létrehozásnál..

    Switch-ben a default -ot nem szeretem használni, mert sok galibát tud okozni. Volt már vele szerencsém. Így sokkal egyszerűbb a hibát megtalálni, ha nincs default :)

    adj mar teljes kodot, igy csak talalgatni lehet
    plusz azt h mit akarsz elerni... igy nehez tslalgatni

    ja azt nem ertettem miert akarsz betusiteni - az nem megy hogy igy symbol-kent akarod hasznalni... es nem igy kene megoldani

  • axioma
    veterán

    Hello,
    Kezdő vagyok.
    Volna pár kérdésem:
    - 69 es sorban hogyan kellene csinálnom?
    - 71 es sorban hogyan kellene csinálnom?
    - 44, 45 ös sorban miért húzza alá zölddel?

    Android Studio/Java

    zold: sztem mert nem ertelmes angol szo
    69. hiaba tudod h mindig erteket kap a szamBetuvel, az ott statikus kodelemzes alapjan lehet inicializalatlan
    [vagy legyen default ag, vagy a deklaracional irj egy ="" -t, akkor mar csak letezo erteket irsz felul]

    mit csinalj: ha 5 kockadobas kene, akkor a for ciklusban kene beirni [nem latszik h az-e az a blokk] az eredmenyeket

  • lanszelot
    addikt

    Hello,
    [link]
    Ha letekerem a zöld box-ban lévő szöveget, hogyan tudok a tetejére vissza ugrani, ha egy sima szövegre klikkelek.
    Nem "a" tag, és nem gomb.

    Bocsánat, véletlen írtam ide, nem volt rajtam a szemüveg :B
    Már nem tudtam törölni

  • hoopy
    csendes tag

    Nagyon szépen köszönöm a segítséget :R

    Ez a bajom, hogy nem tartalmaz lang paramétert.
    És rosszul adtam hozzá, úgy ahogy ott volt lang(hu). :B
    De már látom, hogy lang=hu a megfelelő

    Erre gondoltam, de akkor így megtaláltad két lépésben.

  • hoopy
    csendes tag

    Hello,
    Segítséget szeretnék kérni.
    Csak hobbiból készítettem egy oldalt magamnak ezzel az API -val [link]
    Szeretném ha magyarul írna ki mindent, de a google fordító api már nem működik.
    Nem találom, hogy milyen mondatokat tartalamzhat, így switch-el nem tudom lecserélni se.
    Mar néztem ott a fordítást , de nem a weboldal felöli mondatok vannak az exelben, hanem a kikérő kulcsszavak /aminek nem látom értelmét lefordítani/
    Hogyan tudnám megoldani, hogy magyarul írja ki a mondatokat?

    /pl description: "Partly cloudy throughout the day with rain."
    vagy
    "Partly cloudy throughout the day with a chance of rain throughout the day."/
    Nem naponta váltja, ma már ez nemtudom hanyadik különböző leírás.
    De több mindent kell fordítani, nem csak a leírást.

    Magyar nyelvi kóddal lekérés nem megfelelő? Abban magyarul vannak a description mezők.

    [link]

    lang (optional) – Sets the language of the translatable parts of the output such as the conditions field. Available languages include: ar (Arabic), bg (Bulgiarian), cs (Czech), da (Danish), de (German), el (Greek Modern), en (English), es (Spanish) ), fa (Farsi), fi (Finnish), fr (French), he Hebrew), hu, (Hungarian), it (Italian), ja (Japanese), ko (Korean), nl (Dutch), pl (Polish), pt (Portuguese), ru (Russian),, sr (Serbian), sv (Swedish), tr (Turkish), uk (Ukranian), vi (Vietnamese) and zh (Chinese). In addition passing in ‘id’ will result in the raw descriptor IDs.

    pl:
    description":"Részben felhős egész nap."

Új hozzászólás Aktív témák