Эта ошибка уже была исправлена в разных сообщениях, но я не могу исправить ее после прочтения, поэтому надеюсь, что вы мне поможете. У меня есть активность с одним фрагментом, который я хочу загрузить, но я продолжаю получать следующую ошибку, когда пытаюсь открыть свое приложение. Я убедился, что идентификатор, в который я пытался загрузить свой фрагмент, совпадает с идентификатором в моем FrameLayout и совпадает с указателем и макетом этого фрагмента.
java.lang.IllegalArgumentException: No view found for id 0x7f080083 (es.uam.eps.tfg.menuplanner:id/container_login) for fragment LoginFragment{780bea} (82f1517c-e603-4cad-85d1-1dcd49b1b273) id=0x7f080083}
MainActivity .kt
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
var fragment = supportFragmentManager.findFragmentById(R.id.container_login)
if (fragment == null){
fragment = LoginFragment.newInstance()
supportFragmentManager.beginTransaction().add(R.id.container_login, fragment).addToBackStack(null).commit()
}
}
}
Activity_main. xml
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent">
<FrameLayout
android:id="@+id/container_login"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity" />
</androidx.constraintlayout.widget.ConstraintLayout>
LoginFragment.kt
package es.uam.eps.tfg.menuplanner.firebase
import android.os.Bundle
import android.util.Log
import androidx.fragment.app.Fragment
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import com.google.firebase.auth.FirebaseAuth
import es.uam.eps.tfg.menuplanner.R
import kotlinx.android.synthetic.main.fragment_login.*
const val LOGIN_TAG = "Login"
class LoginFragment : Fragment() {
private lateinit var auth: FirebaseAuth
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
auth = FirebaseAuth.getInstance()
}
override fun onStart() {
super.onStart()
//Checks if user is signed in
var currentUser = auth.currentUser
if (currentUser != null)
Log.d(LOGIN_TAG, "Usuario " + currentUser.displayName)
else {
Log.d(LOGIN_TAG, " No Usuario")
}
button_next_login.setOnClickListener {
auth.createUserWithEmailAndPassword(login_email_text.toString(), login_password_text.toString()).addOnCompleteListener() { task ->
if (task.isSuccessful) {
Log.d(LOGIN_TAG, "Usuario creado ok")
currentUser = auth.currentUser
} else {
Log.w(LOGIN_TAG, "Usuario no creado fail", task.exception)
}
}
}
button_sign_up.setOnClickListener {
activity?.supportFragmentManager?.beginTransaction()?.replace(R.id.container_login, SignUpFragment.newInstance())?.commit()
}
}
override fun onCreateView(
inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
return inflater.inflate(R.layout.fragment_login, container, false)
}
companion object {
fun newInstance() : LoginFragment = LoginFragment()
}
}
фрагмент_логина. xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 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/fragment_login"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:padding="24dp"
android:paddingTop="16dp"
android:orientation="vertical"
>
<ImageView
android:layout_width="64dp"
android:layout_height="64dp"
android:layout_gravity="center_horizontal"
android:layout_marginTop="48dp"
android:layout_marginBottom="16dp"
android:contentDescription="@string/app_logo"
app:srcCompat="@drawable/ic_app_logo" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:layout_marginBottom="132dp"
android:text="@string/app_name"
android:textAppearance="@style/TextAppearance.MenuPlanner.Title" />
<com.google.android.material.textfield.TextInputLayout
android:id="@+id/login_email_text"
android:layout_width="match_parent"
android:layout_height="wrap_content"
style="@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox"
android:hint="@string/email">
<com.google.android.material.textfield.TextInputEditText
android:inputType="text"
android:layout_width="match_parent"
android:layout_height="wrap_content"
/>
</com.google.android.material.textfield.TextInputLayout>
<com.google.android.material.textfield.TextInputLayout
android:id="@+id/login_password_text"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="8dp"
style="@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox"
android:hint="@string/password">
<com.google.android.material.textfield.TextInputEditText
android:inputType="textPassword"
android:layout_width="match_parent"
android:layout_height="wrap_content"
/>
</com.google.android.material.textfield.TextInputLayout>
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="8dp"
>
<com.google.android.material.button.MaterialButton
android:id="@+id/button_next_login"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentEnd="true"
android:text="@string/button_next" />
<com.google.android.material.button.MaterialButton
android:id="@+id/button_sign_up"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_toStartOf="@id/button_next_login"
android:layout_marginEnd="12dp"
style="?attr/materialButtonOutlinedStyle"
android:text="@string/button_sign_up" />
</RelativeLayout>
</LinearLayout>