• 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
388 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 (273,830 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ź 73 wizyt
0 głosów
0 odpowiedzi 86 wizyt
0 głosów
0 odpowiedzi 94 wizyt

92,761 zapytań

141,685 odpowiedzi

320,482 komentarzy

62,105 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

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!

...