1

我对 ImageView 感到筋疲力尽,应用程序正常工作,问题是当我添加新的 ImageViews 时:

当我将 ImageView 添加到 CardView 以在 fragment_home 内的 RecyclerView 中使用它时, NavigationDrawerActivity 返回下一个错误

E/AndroidRuntime: FATAL EXCEPTION: main
    Process: com.example.twittor, PID: 11720
    java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.twittor/com.example.twittor.PrincipalActivity}: java.lang.IllegalArgumentException: ID does not reference a View inside this Activity
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3449)
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3601)
        at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:85)
        at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:135)
        at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:95)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2066)
        at android.os.Handler.dispatchMessage(Handler.java:106)
        at android.os.Looper.loop(Looper.java:223)
        at android.app.ActivityThread.main(ActivityThread.java:7656)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:592)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:947)
     Caused by: java.lang.IllegalArgumentException: ID does not reference a View inside this Activity
        at android.app.Activity.requireViewById(Activity.java:3375)
        at androidx.core.app.ActivityCompat.requireViewById(ActivityCompat.java:363)
        at androidx.navigation.Navigation.findNavController(Navigation.java:58)
        at com.example.twittor.PrincipalActivity.onCreate(PrincipalActivity.java:54)
        at android.app.Activity.performCreate(Activity.java:8000)
        at android.app.Activity.performCreate(Activity.java:7984)
        at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1309)
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3422)
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3601) 
        at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:85) 
        at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:135) 
        at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:95) 
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2066) 
        at android.os.Handler.dispatchMessage(Handler.java:106) 
        at android.os.Looper.loop(Looper.java:223) 
        at android.app.ActivityThread.main(ActivityThread.java:7656) 
        at java.lang.reflect.Method.invoke(Native Method) 
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:592) 
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:947) 

更多信息:

  • PrincipalActivity 是 Android Studio 自动创建的 NavigationDrawerActivity
  • 如果我删除 ImageViewer 的 id,应用程序将停止崩溃
4

2 回答 2

1

尝试在 onPostCreate 方法中访问 NavController。问题可能是当您尝试访问视图时视图未启动。我有一个类似的问题并通过

override fun onPostCreate(savedInstanceState: Bundle?, persistentState: PersistableBundle?) {
    super.onPostCreate(savedInstanceState, persistentState)

    val navController=findNavController(R.id.navHostFragment)

}
于 2021-10-20T03:48:34.753 回答
0

你应该这样使用它。val navController by lazy {Navigation.findNavController(this, R.id.nav_host_fragment)}

于 2021-10-20T05:01:15.923 回答