• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Odwołanie do innej klasy

Object Storage Arubacloud
0 głosów
333 wizyt
pytanie zadane 10 stycznia 2022 w Android, Swift, Symbian przez Metarinda Użytkownik (740 p.)

witam,

Mam problem z zaprogramowaniem warunku  w klasie. Android/Kotlin

Jest to zwykła klasa GameMenager, która obsługuje grę. Chcę w niej zastosować warunek dzięki, któremu będzie w niej można było wywołać klasę object, zawierającą słowa do gry. Warunek ma sprwdzać, która z klas Activity jest wybrana(przejście do klasy Activity odbywa się za pomocą przycisków (Kraje, Owoce)) i wtedy odnieść się do odpowiedniej klasy object SlowaOwoce lub SlowaKraje

class GameManager {


    private var lettersUsed: String = ""
    private lateinit var underscoreWord: String
    private lateinit var wordToGuess: String
    private val maxTries = 7
    private var currentTries = 0
    private var drawable: Int = R.drawable.game0

    fun startNewGame(): GameState {
        var cGame = 0
        lettersUsed = ""
        currentTries = 0
        drawable = R.drawable.game7
        if(cGame == GameKrajeActivity()) // tutaj warunek który ma sprawdzać która klasaActivity jest wybrana
        {
            val randomIndex = Random.nextInt(0, SlowaKraje.words.size)
            wordToGuess = SlowaKraje.words[randomIndex]
        }

        generateUnderscores(wordToGuess)
        return getGameState()
    }

Klasa MainActivity

class MainActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        val countryButton: Button = findViewById(R.id.countryButton)
        val fruitButton: Button = findViewById(R.id.fruitButton)

        countryButton.setOnClickListener {
            val intent = Intent(this, GameCountryActivity::class.java)
            startActivity(intent)
        }

        fruitButton.setOnClickListener {
            val fruitB = Intent(this,GameFruitActivity::class.java)
            startActivity(fruitB)
        }


    }
}

 

1 odpowiedź

0 głosów
odpowiedź 10 stycznia 2022 przez Wiciorny Ekspert (269,710 p.)

zamiast operatora == użyj instance of a z funkcji zwróć obiekt reprezentujący tę klasę 
GameKrajeActivity() - return typKlasy... którą chcesz uwzględnić do porównania 

Natomiast takie rozwiązanie jets w javie jako operator instanceof w kotlinie posiłkuj się "if"
 

if (obiekt is TypeClass) {
 //zrób z nim coś 
}

https://kotlinlang.org/docs/typecasts.html
nie rozumiem tylko co kminisz - masz zmienną lokalną funkcyjną var cGame = 0 w zakresie funkcji która nie zmienia swojego stanu przed warunkiem... zatem zawsze bedzie miała wartość 0 przed kondycją "if"

Podobne pytania

+1 głos
1 odpowiedź 54 wizyt
0 głosów
0 odpowiedzi 55 wizyt
0 głosów
0 odpowiedzi 62 wizyt

92,556 zapytań

141,403 odpowiedzi

319,559 komentarzy

61,942 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...