неразрешенная ссылка: ошибки деятельности - PullRequest
0 голосов
/ 20 мая 2019

Я создаю функции для записи переменных из полей editText в sharedPreferences.

Я пробовал несколько возможностей для записи в sharedPreferences, но ни одна из них не работала, поэтому решил написать свою собственную.Поэтому я сделал соответствующие поля TextView onClick'able, которые затем запускают функции записи в sharedPreferences.

package com.taylorworld.tw01

import android.content.Context
import android.os.Bundle
import com.google.android.material.snackbar.Snackbar
import androidx.appcompat.app.AppCompatActivity;
import android.view.Menu
import android.view.MenuItem
import android.view.View

import kotlinx.android.synthetic.main.activity_main.*
import kotlinx.android.synthetic.main.content_main.*

class MainActivity() : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContentView(R.layout.activity_main)
    //setSupportActionBar(findViewById(R.id.my_toolbar))

    fab.setOnClickListener { view ->
        Snackbar.make(view, "Replace with your own action", Snackbar.LENGTH_LONG)
            .setAction("Action", null).show()
    }
    }

override fun onCreateOptionsMenu(menu: Menu): Boolean {
    // Inflate the menu; this adds items to the action bar if it is                  present.
    menuInflater.inflate(R.menu.menu_main, menu)
    return true
}

override fun onOptionsItemSelected(item: MenuItem): Boolean {
    // Handle action bar item clicks here. The action bar will
    // automatically handle clicks on the Home/Up button, so long
    // as you specify a parent activity in AndroidManifest.xml.
    return when (item.itemId) {
        R.id.action_settings -> true
        else -> super.onOptionsItemSelected(item)
    }
   }

    var strength = editText2.text.toString()
    var dexterity = editText.text.toString()
    var intelligance = editText4.text.toString()
    var wisdom = editText3.text.toString()
    var constitution = editText6.text.toString()
    var charisma = editText5.text.toString()
    var chrname = editText7.text.toString()

    val sharedPref = activity?.getPreferences(Context.MODE_PRIVATE)

    public fun saveStr(view: View) {

        val sharedPref = activity?.setPreferences(Context.MODE_PRIVATE) ?: return with(sharedPref.edit()) {
            putInt(getString(STR), strength)
            commit()
        }
     }

    public fun saveDex(view: View) {

        val sharedPref = activity?.setPreferences(Context.MODE_PRIVATE) ?: return with(sharedPref.edit()) {
            putInt(getString(DEX), dexterity)
            commit()
        }
     }

     public fun readStr(view: View) {

    }
    }

Я получаю «неразрешенную ссылку: ошибки» из строк 50, 54 и 62 и не могу решить, как устранить ошибки.

1 Ответ

0 голосов
/ 20 мая 2019

Есть ряд вещей, которые не совсем идеальны в этом коде, но чтобы вы начали с ответа на свой ближайший вопрос:

У действий нет элемента activity (переменная или функция), на который вы можете ссылаться. Однако точки, в которых вы пытаетесь сослаться на activity, сами являются частью области действия MainActivity, и потому что MainActivity само по себе является Activity (через его наследование от AppCompatActivity), так что вы можете просто замените activity. на this.. Вы можете еще больше упростить и просто удалить префикс this. для этих вызовов.

Сделайте это и посмотрите, не можете ли вы понять это оттуда. Если вы не можете, я буду рад помочь еще!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...