タブレット用プログラムの書き止め

android OS & iPadOS の記録。

【kotlin】 デベロッパーの説明では自分のやりたい正解が見つからない

2024-02-13 22:16:41 | Android studio 日記

Javaでは、LiveDataの初期化は任意なのにKotlinのMutableLiveDataはよく分からない。
init{ } がKotlinにはあるので試しに書いてみる。
エラーは出ないし、問題が出なければ、いっか。


class MainViewModel: ViewModel() {
    private val _mainData = MainData()
    val mainData:MainData
        get() = _mainData

    val screenType: MutableLiveData<Int> by lazy { MutableLiveData<Int>() } 
    val rotateLock: MutableLiveData<Int> by lazy { MutableLiveData<Int>() }
    val openBookMode: MutableLiveData<Boolean> by lazy { MutableLiveData<Boolean>() } 

    init {
        screenType.value = ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED
        rotateLock.value = ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED
        openBookMode.value = true // true 右開き false 左開き
    }

    ///// リスト ///////////////////////////////////////////

    private var _targetPath = ""
    val targetPath: String
        get() = _targetPath
    fun setTargetPath(path:String){ // Activityのみアクセス
        _targetPath = path
    }

    ///// 画像 ///////////////////////////////////////////

    // 1枚表示か2枚表示かを保持。外部から_pageModeに書き込みできない仕様
    private var _pageMode = 0
    val pageMode: Int // 通常アクセス。読み取り専用
        get() = _pageMode

    // 1枚表示か2枚表示かをセットするメソッド。画面の向きで枚数を決定。使用場所限定。
    fun setPageMode(){
        when(screenType.value){
            ActivityInfo.SCREEN_ORIENTATION_PORTRAIT -> {
                _pageMode = 1
            }
            ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE -> {
                _pageMode = 2
            }
            else -> _pageMode = 0
        }
    }

/////////// コルーチン //////////////////////////////
/**
    private val coroutinScope = CoroutineScope(Dispatchers.Main + SupervisorJob())

    fun test(){
        coroutinScope.launch {
            // 非同期処理
        }
    }
*/
    override fun onCleared() {
        super.onCleared()
        _mainData.finish()
        //coroutinScope.cancel()
    }
}

 


  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする