Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/232.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/kotlin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
原因:android.view.InflateException_Android_Kotlin_Mobile - Fatal编程技术网

原因:android.view.InflateException

原因:android.view.InflateException,android,kotlin,mobile,Android,Kotlin,Mobile,我正在尝试打开我的应用程序,但这在充气时出错 日志: 这段代码位于一个条目片段中,我在其中使用firebase实现登录 就在startActivity下面,我有一个“finish()”,但由于我在一个片段中,我不得不将其删除,我不知道如果没有这个方法,问题是否会出现 activityMain XML: <?xml version="1.0" encoding="utf-8"?> <androidx.drawerlayout.wid

我正在尝试打开我的应用程序,但这在充气时出错

日志:

这段代码位于一个条目片段中,我在其中使用firebase实现登录

就在startActivity下面,我有一个“finish()”,但由于我在一个片段中,我不得不将其删除,我不知道如果没有这个方法,问题是否会出现

activityMain XML:

    <?xml version="1.0" encoding="utf-8"?>
<androidx.drawerlayout.widget.DrawerLayout 
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/drawerLayout"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".ui.main.MainActivity">

<androidx.constraintlayout.widget.ConstraintLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent">

        <androidx.fragment.app.FragmentContainerView
            android:id="@+id/pokemons_activity_nav_host"
            android:name="androidx.navigation.fragment.NavHostFragment"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            app:defaultNavHost="true"
            app:navGraph="@navigation/nav_graph" />


    <com.google.android.material.bottomnavigation.BottomNavigationView
        android:id="@+id/main_activity_bottom_navigation"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_marginStart="0dp"
        android:layout_marginEnd="0dp"
        android:background="@color/bottomNavigation"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintRight_toRightOf="parent"
        app:menu="@menu/botao_nav_menu" />


</androidx.constraintlayout.widget.ConstraintLayout>

<com.google.android.material.navigation.NavigationView
    android:id="@+id/navView"
    android:layout_width="wrap_content"
    android:layout_height="match_parent"
    android:layout_gravity="start"
    android:fitsSystemWindows="true"
    app:headerLayout="@layout/nav_header"
    app:menu="@menu/nav_drawer_menu" />

</androidx.drawerlayout.widget.DrawerLayout>

看起来RegistroActivity正在尝试初始化一个片段,但失败了


原因:java.lang.NullPointerException:尝试调用虚拟方法“void” 空对象上的android.widget.TextView.setOnClickListener(android.view.view$OnClickListener)“”

此错误消息行表示您试图在尚未初始化的textview上设置侦听器。尝试在onViewCreated方法中初始化侦听器


“应该工作”

看起来RegistroActivity正在尝试初始化一个片段,但失败了


原因:java.lang.NullPointerException:尝试调用虚拟方法“void” 空对象上的android.widget.TextView.setOnClickListener(android.view.view$OnClickListener)“”

此错误消息行表示您试图在尚未初始化的textview上设置侦听器。尝试在onViewCreated方法中初始化侦听器


正如@OskarLasota建议的那样,应该可以工作,错误在
EntradaFragment
片段中,它可能是
reg\u novo\u user
变量的初始化问题。

片段中
不能直接引用
活动
实例,这就是为什么不能调用
finish()
方法,应该使用
requireActivity()
方法并调用
requireActivity().finish()

要解决
NullPointerException
问题,您应该在
onCreateView
方法中声明
setOnClickListener
行,如下所示。
请注意,我将click listener函数更改为使用
requirectivity()
方法。
与活动不同,在不能直接引用布局元素的片段中,应该调用视图实例上的
findViewById
方法

在我的代码中,假设您的
reg\u novo\u用户
是一个按钮

override fun onCreateView(
        inflater: LayoutInflater,
        container: ViewGroup?,
        savedInstanceState: Bundle?
    ): View? {
        val view = inflater.inflate(...)

        view.findViewById<Button>(R.id.reg_novo_user).setOnClickListener {
            val intent = Intent(requireActivity(), RegistroActivity::class.java)
            requireActivity().startActivity(intent)
        }

        return view
    }
覆盖创建视图(
充气机,
容器:视图组?,
savedInstanceState:捆绑?
):查看?{
val视图=充气机。充气(…)
view.findViewById(R.id.reg\u novo\u user).setOnClickListener{
val intent=intent(requireActivity(),RegistroActivity::class.java)
要求反应性().开始触觉(意图)
}
返回视图
}

正如@OskarLasota建议的,错误出现在您的
片段中,这可能是
reg\u novo\u用户
变量的初始化问题。

片段中
不能直接引用
活动
实例,这就是为什么不能调用
finish()
方法,应该使用
requireActivity()
方法并调用
requireActivity().finish()

要解决
NullPointerException
问题,您应该在
onCreateView
方法中声明
setOnClickListener
行,如下所示。
请注意,我将click listener函数更改为使用
requirectivity()
方法。
与活动不同,在不能直接引用布局元素的片段中,应该调用视图实例上的
findViewById
方法

在我的代码中,假设您的
reg\u novo\u用户
是一个按钮

override fun onCreateView(
        inflater: LayoutInflater,
        container: ViewGroup?,
        savedInstanceState: Bundle?
    ): View? {
        val view = inflater.inflate(...)

        view.findViewById<Button>(R.id.reg_novo_user).setOnClickListener {
            val intent = Intent(requireActivity(), RegistroActivity::class.java)
            requireActivity().startActivity(intent)
        }

        return view
    }
覆盖创建视图(
充气机,
容器:视图组?,
savedInstanceState:捆绑?
):查看?{
val视图=充气机。充气(…)
view.findViewById(R.id.reg\u novo\u user).setOnClickListener{
val intent=intent(requireActivity(),RegistroActivity::class.java)
要求反应性().开始触觉(意图)
}
返回视图
}

你能发布你的
main\u活动
XML布局和你的
main活动
类代码吗?@luca\u 999是的,我能,我会更新post nowjava.lang.NullPointerException:尝试调用虚拟方法'void android.widget.TextView.setOnClickListener(android.view.view$OnClickListener)'在空对象引用上,可以发布
main\u活动
XML布局和
main活动
类代码吗?@luca\u 999是的,我可以,我将更新post nowjava.lang.NullPointerException:尝试调用虚拟方法'void android.widget.TextView.setOnClickListener(android.view.view$OnClickListener)'在空对象引用上
package com.example.pokedex.ui.main

import android.app.Activity
import android.content.Intent
import android.net.Uri
import android.os.Bundle
import android.os.Environment
import android.provider.MediaStore
import android.view.MenuItem
import android.view.View
import androidx.appcompat.app.ActionBarDrawerToggle
import androidx.appcompat.app.AppCompatActivity
import androidx.core.content.FileProvider
import androidx.fragment.app.FragmentTransaction
import androidx.navigation.findNavController
import androidx.navigation.fragment.NavHostFragment
import androidx.navigation.ui.setupWithNavController
import com.example.pokedex.R
import com.example.pokedex.ui.listaFavPokemons.ListaFavPokemonsFragment
import com.example.pokedex.ui.listaPokemons.ListaPokemonsFragment
import kotlinx.android.synthetic.main.lista_fav_pokemons.*
import kotlinx.android.synthetic.main.main_activity.*
import kotlinx.android.synthetic.main.nav_header.*
import java.io.File
import java.io.IOException
import java.text.SimpleDateFormat
import java.util.*

@Suppress("DEPRECATION")
class MainActivity : AppCompatActivity() {

private lateinit var toggle: ActionBarDrawerToggle
var currentPath: String? = null
val TAKE_PICTURE = 1
val SELECT_PICTURE = 2
lateinit var favFragment: ListaFavPokemonsFragment
lateinit var listaFragment: ListaPokemonsFragment

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContentView(R.layout.main_activity)
    configBottomNavegacao()
    configNavDrawer()

    val navHostFragment = supportFragmentManager
        .findFragmentById(R.id.pokemons_activity_nav_host) as NavHostFragment
    val navController = navHostFragment.navController

    main_activity_bottom_navigation.setupWithNavController(navController)

    toggle = ActionBarDrawerToggle(this, drawerLayout, R.string.open, 
R.string.close )
    drawerLayout.addDrawerListener(toggle)
    toggle.syncState()

    supportActionBar?.setDisplayHomeAsUpEnabled(true)

    navView.setNavigationItemSelectedListener {
        when(it.itemId){
            R.id.drawer_Home -> dispatchHome()
            R.id.drawer_camera -> dispatchCameraIntent()
            R.id.drawer_fav -> dispatchFavoritosIntent()
            R.id.drawer_maps -> dispatchMaps()
        }
        true
    }
}

private fun dispatchHome() {
    listaFragment = ListaPokemonsFragment()
    supportFragmentManager
        .beginTransaction()
        .replace(R.id.pokemons_activity_nav_host, listaFragment)
        .setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN)
        .commit()
}

private fun dispatchMaps() {
    val intent = Intent(this, MapsActivity::class.java)
    startActivity(intent)
}

private fun dispatchFavoritosIntent() {
    favFragment = ListaFavPokemonsFragment()
    supportFragmentManager
        .beginTransaction()
        .replace(R.id.pokemons_activity_nav_host, favFragment)
        .setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN)
        .commit()
}

private fun configNavDrawer() {
    val navHostFragment = supportFragmentManager
        .findFragmentById(R.id.pokemons_activity_nav_host) as NavHostFragment
    val navController = navHostFragment.navController

    // verifica onde vai ou nao mostrar o drawer
    navController.addOnDestinationChangedListener { controller, destination, 
 arguments ->
        when(destination.id){
            R.id.listaPokemons -> mostraNavDrawer()
            R.id.listaFavPokemons -> mostraNavDrawer()
            R.id.search -> mostraNavDrawer()
            R.id.detalhesPokemons -> mostraNavDrawer()
        else -> ocultaNavDrawer()
        }
    }
}

private fun mostraNavDrawer() {
    navView.visibility = View.VISIBLE
}
private fun ocultaNavDrawer(){
    navView.visibility = View.GONE
}

// controle bottom navigation
private fun configBottomNavegacao() {
    val navHostFragment = supportFragmentManager
        .findFragmentById(R.id.pokemons_activity_nav_host) as NavHostFragment
    val navController = navHostFragment.navController

    // verifica onde vai ou nao mostrar o bottom navigation
    navController.addOnDestinationChangedListener { controller, destination, 
 arguments ->
        when(destination.id){
            R.id.listaPokemons -> mostraBottomNav()
            R.id.listaFavPokemons -> mostraBottomNav()
            //R.id.search -> mostraBottomNav()
            R.id.detalhesPokemons -> mostraBottomNav()
            else -> ocultaBottomNavigation()
        }

    }

}

//oculta o botao de navegaçao
private fun ocultaBottomNavigation() {
    main_activity_bottom_navigation.visibility = View.GONE
}

// exibe o botao de navegaçao
private fun mostraBottomNav() {
    main_activity_bottom_navigation.visibility = View.VISIBLE
}

// abre o menu lateral (exibe ele)
override fun onOptionsItemSelected(item: MenuItem): Boolean {
    if(toggle.onOptionsItemSelected(item)){
        return true
    }
    return super.onOptionsItemSelected(item)
}
// recebo a foto
override fun onActivityResult(requestCode: Int, resultCode: Int, data: 
Intent?) {
    super.onActivityResult(requestCode, resultCode, data)
    if (requestCode == TAKE_PICTURE && resultCode == Activity.RESULT_OK) {
        try {
            val file = File(currentPath)
            val uri = Uri.fromFile(file)
            imagem_usuario.setImageURI(uri)
        } catch (e: IOException) {
            e.printStackTrace()
        }
    }
    if (requestCode == SELECT_PICTURE && resultCode == Activity.RESULT_OK) {
        try {
            val uri = data!!.data
            imagem_usuario.setImageURI(uri)
        } catch (e: IOException) {
            e.printStackTrace()
        }
    }
}

// abre a camera
private fun dispatchCameraIntent() {
    val intent = Intent(MediaStore.ACTION_IMAGE_CAPTURE)
    if (intent.resolveActivity(packageManager) != null) {
        var photoFile: File? = null
        try {
            photoFile = createImage()
        } catch (e: IOException) {
            e.printStackTrace()
        }
        if (photoFile != null) {
            var photoUri = FileProvider.getUriForFile(this,
                "com.example.pokedex.fileprovider", photoFile)
            intent.putExtra(MediaStore.EXTRA_OUTPUT, photoUri)
            startActivityForResult(intent, TAKE_PICTURE)
        }
    }
}
    //cria a imagem
private fun createImage(): File {
    val timeStamp = SimpleDateFormat("yyyyMMdd_HHmmss").format(Date())
    val imageName = "JPEG_" + timeStamp + "_"
    var storageDir = getExternalFilesDir(Environment.DIRECTORY_PICTURES)
    var image = File.createTempFile(imageName, ".jpg", storageDir)
    currentPath = image.absolutePath
    return image
 }

}
override fun onCreateView(
        inflater: LayoutInflater,
        container: ViewGroup?,
        savedInstanceState: Bundle?
    ): View? {
        val view = inflater.inflate(...)

        view.findViewById<Button>(R.id.reg_novo_user).setOnClickListener {
            val intent = Intent(requireActivity(), RegistroActivity::class.java)
            requireActivity().startActivity(intent)
        }

        return view
    }