[解決済み] Kotlinはグローバル変数の値を設定する
質問
以下のコードで宣言されたグローバル変数の値を設定しようとしています。
class MyApplication: Application() {
var globalVar = 2
}
メインアクティビティにetPersonという名前の編集テキストがあります。etPersonに値を入力し、入力した値をglobalVarに等しく設定したいと思います。
なぜかというと、別のActivityでデータベースの関数を呼び出したいからです
以下は、DBへの呼び出しを行うコードです。
var mApp = MyApplication()
var intGlobalVar = mApp.globalVar
println("@@@@@@@@@@@@@@@@@@@@@@@@@@@@ globalINT = "+intGlobalVar)
var ITEM = db.getItem(intGlobalVar)
println("%%%%%%%%%%%%%%%%%% ITEM "+ITEM?.id+" name "+ITEM?.name)
そして、わかりやすくするために、以下はDB関数です。
fun getItem(id: Int): Contact? {
val db = this.writableDatabase
val selectQuery = "SELECT * FROM $TABLE_NAME WHERE $colId = ?"
db.rawQuery(selectQuery, arrayOf(id.toString())).use {
// .use requires API 16
if (it.moveToFirst()) {
val result = Contact(0)
result.id = it.getInt(it.getColumnIndex(colId))
result.name = it.getString(it.getColumnIndex(colName))
return result
}
}
return null
}
つまり、Main ActivityのetPersonに入力された値をvar globalVarに設定することが問題です。
このコンセプトは、インテントのputとgetを使用して達成することができますが、ここではそれが目的ではありません。
問題は、Edit Textに入力された値をglobalVarに設定するにはどうしたらいいかということです。
どのように解決するのですか?
アプリを起動すると、MyApplication()クラスのオブジェクトが1つだけ作成されるので、その必要はありません。
var mApp = MyApplication()
にアクセスすることができます。
MyApplication()
とそのすべてのメンバを、アプリ内のどこからでも利用できるようにします。
を宣言してください。
companion
オブジェクトを
MyApplication()
を配置し
globalVar
の宣言はその中にあります。
class MyApplication: Application() {
companion object {
var globalVar = 2
}
override fun onCreate() {
super.onCreate()
// initialization code here
}
}
ということは、あなたの
MainActivity
クラスやその他の場所で
MyApplication.Companion.globalVar
を使用して、その値を取得または設定します。
または、インポートして
globalVar
のように、任意のクラスで変数を使用することができます。
import yourpackagename.MyApplication.Companion.globalVar
を作成し、単純にそれを参照する
globalVar
を宣言する必要があります。
MyApplication
をマニフェストに追加します。
<application
android:name=".MyApplication"
関連
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】java.lang.RuntimeException: アクティビティを開始できない ComponentInfo
-
[解決済み】シンボル 'AppCompatActivity' を解決できない。
-
[解決済み】Android Studioでマニフェストのマージに失敗し、複数のエラーが発生した。
-
[解決済み】android.content.ActivityNotFoundException: 明示的なアクティビティクラスを見つけることができません。
-
[解決済み] エラー - Android リソースのリンクに失敗しました (AAPT2 27.0.3 Daemon #0)
-
[解決済み] Android Studioで「URIが登録されていません」と報告されるのはなぜですか?[クローズド]
-
[解決済み] コンパイルした.apkを端末にインストールしようとするとINSTALL_FAILED_UPDATE_INCOMPATIBLEが表示される
-
[解決済み] Gradle DSL メソッドが見つかりません:'compile()'
-
[解決済み] Android Fragment no view found for ID?
-
[解決済み] android.intent.action.MAINの意味は何ですか?