[英]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
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()
在同一级别activity
is not available in an Activity
. activity
在Activity
中不可用。 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.