简体   繁体   English

我如何使用当前版本从 cardview 打开一个新活动

[英]How can i open up a new activity from cardview with my current build

If I should change it from card to maybe a button for easier code please let me know, but I have tried multiple ways with card view and none seem to be working for me.如果我应该将它从卡片更改为按钮以简化代码,请告诉我,但我已经尝试了多种卡片视图方式,但似乎没有一种适合我。 Im trying to open a new activity when i click the cardview for DashboardTmsActivity.当我单击 DashboardTmsActivity 的卡片视图时,我试图打开一个新活动。

current error is this目前的错误是这个

MainActivity.kt
Modifier 'override' is not applicable to 'local function':19
Unresolved reference: activity
Unresolved reference: activity:23

here is my current code.这是我当前的代码。

MainActivity.kt主活动.kt

package com.cameron.armymaintenance

import android.content.Intent
import android.os.Bundle
import android.view.View
import androidx.cardview.widget.CardView
import com.cameron.armymaintenance.databinding.ActivityDashboardTmsBinding
import com.cameron.armymaintenance.databinding.ActivityMainBinding

class MainActivity : DrawerBaseActivity() {

    private lateinit var binding: ActivityMainBinding

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        binding = ActivityMainBinding.inflate(layoutInflater)
        setContentView(binding.root)

        override fun onViewCreated(view: View, savedInstanceState: Bundle?) {

            view.findViewById<CardView>(R.id.card1).setOnClickListener {
                val card1 = Intent(activity, ActivityDashboardTmsBinding::class.java)
                activity?.startActivity(card1)
            }
        }
    }
}

DrawerBaseActivity.kt DrawerBaseActivity.kt

package com.cameron.armymaintenance

import android.os.Bundle
import android.view.MenuItem
import android.view.View
import android.widget.FrameLayout
import androidx.appcompat.app.ActionBarDrawerToggle
import androidx.appcompat.app.AppCompatActivity
import androidx.appcompat.widget.Toolbar
import androidx.drawerlayout.widget.DrawerLayout
import com.google.android.material.navigation.NavigationView

open class DrawerBaseActivity : AppCompatActivity(), NavigationView.OnNavigationItemSelectedListener {


    var drawerLayout: DrawerLayout? = null

    override fun setContentView(view: View?) {
        drawerLayout = layoutInflater.inflate(R.layout.activity_drawer_base, null) as DrawerLayout
        val container = drawerLayout!!.findViewById<FrameLayout>(R.id.activityContainer)
        container.addView(view)
        super.setContentView(drawerLayout)
        val toolbar = drawerLayout!!.findViewById<Toolbar>(R.id.toolBar)
        setSupportActionBar(toolbar)
        val navigationView = drawerLayout!!.findViewById<NavigationView>(R.id.nav_view)
        navigationView.setNavigationItemSelectedListener(this)
        val toggle = ActionBarDrawerToggle(
            this,
            drawerLayout,
            toolbar,
            R.string.menu_drawer_open,
            R.string.menu_drawer_open
        )
        drawerLayout!!.addDrawerListener(toggle)
        toggle.syncState()
    }

    override fun onNavigationItemSelected(item: MenuItem): Boolean {
        return false
    }

    private fun allocateActivityTitle(titleString: String?) {
        if (supportActionBar != null) {
            supportActionBar!!.title = titleString
        }
    }

    open fun onViewCreated(view: View, savedInstanceState: Bundle?) {}
}

DashboardTmsActivity.kt仪表板TmsActivity.kt

package com.cameron.armymaintenance

import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle

class DashboardTmsActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_dashboard_tms)
    }
}

So there should be 2 errors if I have not misinterpreted:所以如果我没有误解的话应该有2个错误:

Modifier 'override' is not applicable to 'local function':19
Unresolved reference: activity:23
  1. onViewCreated() should not be placed inside onCreate() . onViewCreated()不应放在onCreate()内。 If you need to implement onViewCreated() , it should be at the same level with onCreate()如果你需要实现onViewCreated() ,它应该与onCreate()在同一级别
  2. activity is not available in an Activity . activityActivity中不可用。 It only exists in a Fragment class. You can simply use this in an Activity .它只存在于Fragment class 中。您可以简单地在Activity中使用this
class MainActivity : DrawerBaseActivity() {

    private lateinit var binding: ActivityMainBinding

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        binding = ActivityMainBinding.inflate(layoutInflater)
        setContentView(binding.root)
    }
    
    // Move to same level for function
    override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
        view.findViewById<CardView>(R.id.card1).setOnClickListener {
            // Use this in Activity
            val card1 = Intent(this@MainActivity, ActivityDashboardTmsBinding::class.java)
            startActivity(card1)
        }
    }
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 android-如何在一个新任务内打开一个新活动,并使它发生在当前任务之后? - android - How can I open a new activity inside of a new task and let it occur behind the current task? 如何从片段中打开新的活动? - How I can open a new Activity from a Fragment? 如何从我的应用程序Android打开当前活动当前应用程序 - How to open current activity current application from my application Android 我如何单击一个活动上的卡片视图并使用Firebase中的数据打开新活动 - How can i click on card view on one activity and open new activity with data from Firebase 如何从新活动打开新的 xamarin.forms - How can I open a new xamarin.forms from a new activity 如何为我的卡片视图设置边框? - How can I set border to my cardview? 如何强制我的Android应用程序在singleTop启动模式下打开相同活动的新实例 - How can I force my Android application to open a new instance of the same activity in singleTop launch mode 如何从当前活动开始新活动? - How to start new activity from current activity? 如何将数据从当前活动传递到暂停的活动? - How can I pass data from the current Activity to a paused Activity? 如何找到当前活动从(startActivity)开始的活动? - How can I find an of activity the current activity is started from (startActivity)?
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM