0

I want to use my args.breweryName from my reviewActivity in my reviewViewModel but i don't know what's the best way to do it. I have tried using savestatehandle but i'm not experienced with that. I'm new to programming with kotlin so i would appreciate the help!

My ReviewActivity

class ReviewActivity : AppCompatActivity() {
    val breweryText: TextView
    get() = findViewById(R.id.breweryName)
    private val args: ReviewActivityArgs by navArgs<ReviewActivityArgs>()
    private var shownFragment: Fragment? = null



    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_review)
        initView()

        if (savedInstanceState == null) {
            showFragment(ReviewFragment.newInstance())
        }
        breweryText.text = args.breweryName
    }

    fun test(): String {
        return args.breweryName
    }

    

    private fun initView() {
        val button : FloatingActionButton = findViewById(R.id.add)
        showFragment(ReviewFragment.newInstance())
        button.setOnClickListener { showSaveDialog() }
    }

    private fun showFragment(fragment: Fragment) {
        val fragmentTransaction: FragmentTransaction = supportFragmentManager.beginTransaction()
        fragmentTransaction.replace(R.id.fragmentHolder, fragment)
        fragmentTransaction.commitNow()
        shownFragment = fragment
    }

    private fun showSaveDialog() {
        val dialogFragment: DialogFragment
        val tag: String
        dialogFragment = ReviewDialog.newInstance(null, null, args.breweryName)
        tag = ReviewDialog.TAG_DIALOG_REVIEW_SAVE

        dialogFragment.show(supportFragmentManager, tag)
    }

My ReviewViewModel


class ReviewViewModel constructor(application: Application) : AndroidViewModel(application) {

    private val reviewDao: ReviewDao = ReviewsDatabase.getDatabase(application).reviewDao()
    private val userDao: UserDao = ReviewsDatabase.getDatabase(application).userDao()
    val data = MutableLiveData<String>()
    val reviewList: LiveData<List<Review>>
    val userList: LiveData<List<User>>
    fun data(item: String) {
        data.value = item
    }
    init {
        reviewList = reviewDao.allReviews
        userList = userDao.allUsers
    }

    fun insert(vararg reviews: Review) {
        reviewDao.insert(*reviews)
    }

    fun update(review: Review) {
        reviewDao.update(review)
    }

    fun deleteAll() {
        reviewDao.deleteAll()
    }
}

0 Answers0