E/AndroidRuntime:致命异常:主进程:com.projects.arise.myTestApp,PID:28285 java.lang.RuntimeException:无法启动activity ComponentInfo{com.projects.arise.myTestApp/com.projects.arise.myTestApp.MainActivity}:java.lang.IllegalStateException:rview_keys在Android.app.ActivityThread.PerformLaunchActivity(ActivityThread.java:2817)在Android.app.ActivityThread.HandleLaunchActivity(m.projects.arise.mytestapp.mainactivity.onCreate(mainactivity.kt:55),位于Android.app.activity.performCreate(activity.java:6975),位于Android.app.instrumentation.callactivityonCreate(instrumentation.java:1213),位于Android.app.activitythread.performLaunchActivity(activitythread.java:2770),位于Android.app.activitythread.handleLaunchActivity(activitythread.java:2892) 在android.app.activitythread.-wrap11(未知源:0) 在Android.app.ActivityThread$H.HandleMessage(ActivityThread.java:1593) 在android.os.handler.dispatchMessage(Handler.java:105) 在android.os.looper.loop(looper.java:164) 在android.app.activityThread.main(activityThread.java:6541) 在java.lang.Reflect.Method.Invoke(原生方法) 在com.android.internal.os.zygote$methodandargscaller.run(zygote.java:240) 在com.android.internal.os.zygoteinit.main(zygoteinit.java:767)
mainactivity.kt
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
val host: NavHostFragment = supportFragmentManager
.findFragmentById(R.id.nav_host_fragment) as NavHostFragment? ?: return
val navController = host.navController
setupBottomNavMenu(navController)
}
override fun onSupportNavigateUp(): Boolean {
return Navigation.findNavController(this, R.id.nav_host_fragment).navigateUp()
}
private fun setupBottomNavMenu(navController: NavController) {
findViewById<BottomNavigationView>(R.id.navigation)?.let { bottomNavView ->
NavigationUI.setupWithNavController(bottomNavView, navController)
}
}
}
FragmentKeys.kt
class FragmentKeys : Fragment() {
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
setHasOptionsMenu(true)
return inflater.inflate(R.layout.fragment_keys_layout, container, false)
}
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
}
override fun onActivityCreated(savedInstanceState: Bundle?) {
super.onActivityCreated(savedInstanceState)
//val rview_keys: RecyclerView = findViewById(R.id.rview_keys)
rview_keys.layoutManager = LinearLayoutManager(context)
rview_keys.adapter = AdapterKeys(KeysListObjects.keys)
}
}
我注释掉了上面的一行,因为我在“findViewByID”上得到了一个“unresolved reference”错误。这行似乎没有必要,因为它不在其他人的代码中。例如:Kotlin Android碎片回收视图和上下文问题
class AdapterKeys(val keys: List<KeysList>) : RecyclerView.Adapter<AdapterKeys.KeysViewHolder>() {
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): KeysViewHolder {
val view = LayoutInflater.from(parent?.context).inflate(R.layout.list_item_keys, parent, false)
return KeysViewHolder(view)
}
override fun getItemCount() : Int {
return keys.size
} //override fun getItemCount() = keys.size
override fun onBindViewHolder(holder: KeysViewHolder, position: Int) {
val keysList = keys[position]
holder.setData(keysList, position)
}
inner class KeysViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
fun setData(keysList: KeysList?, position: Int) {
itemView.tview_Keys.text = keysList!!.keysText
}
}
}
object KeysListObjects {
val keys = listOf<KeysList>(
KeysList("Testing1"),
KeysList("Testing2"),
KeysList("Testing3")
)
}
您将得到错误,因为您注释了以下内容
//val rview_keys:RecyclerView=findViewById(r.id.rview_keys)
没有将rview_keys声明为变量。因此它将rview_keys视为一个视图,因为在您的活动中有一个id为rview_keys的视图。
我正在我的应用程序中尝试导航架构组件。早些时候,我使用片段事务来实现以下功能。基本上,我想从导航。 碎片- 如果我正在使用导航组件并尝试 然后结果是FragmentA被FragmentB替换并且背景片段不可见。 我想知道一个解决方案,如果导航架构组件允许的话。 附言:我听说过嵌套导航主机,但从内部使用它好吗。 更新: FragmentB将有进一步交易的行动,例如: 碎片- 当用户按下后退按钮时,片
是否可以将新的导航架构组件与DialogFragment一起使用?我必须创建自定义导航器吗? 我很乐意将它们与导航图中的新功能结合使用。
我有如下的屏幕,其中包含一个导航抽屉和底部导航在同一个屏幕上: 我正在使用Jetpack导航架构组件。 当前问题和我尝试了什么? 单击第二个和第三个底部导航项目会在工具栏上显示返回箭头吗? 已尝试:将与第二和第三底部导航相关联的片段设置为顶级目的地 代替 不起作用。 任何帮助高度赞赏! 我的代码如下所示。 activity_main.xml menu_bottom.xml nav_graph.xm
假设我们有两个片段:
null 在调用之前和之后,我尝试了,但都不起作用(这是有意义的:在它没有要弹出的内容之前;在它只关闭刚刚添加的片段之后)。这是否意味着唯一的方法是重写来拦截它,并确保在这些情况下不会被调用? 谢了!
我正在探索上个月在Google I/O 2018中引入的“导航架构组件”概念。 假设我有一个带有底部导航视图和一个“片段”的活动来承载所有片段:- “我的导航”和“我的导航”将分别在A/B视图中显示“我的碎片”和“我的碎片”选项卡。FragmentB有一个嵌套的(子)片段FragmentC,可以从FragmentB打开。 在我的活动类中,我使用“setupWithNavController()”函