当我按下编辑按钮时,程序崩溃并停止工作。
我需要帮助,这是为大学工作的,我不知道问题出在哪里。
**错误是这样的:**
E/AndroidRuntime: FATAL EXCEPTION: main
Process: pjurado.com.a05reciclerviewobjeto, PID: 14577
java.lang.IllegalStateException: Could not execute method for android:onClick
at androidx.appcompat.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:414)
at android.view.View.performClick(View.java:6256)
at android.view.View$PerformClick.run(View.java:24701)
at android.os.Handler.handleCallback(Handler.java:789)
at android.os.Handler.dispatchMessage(Handler.java:98)
at android.os.Looper.loop(Looper.java:164)
at android.app.ActivityThread.main(ActivityThread.java:6541)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:240)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:767)
Caused by: java.lang.reflect.InvocationTargetException
at java.lang.reflect.Method.invoke(Native Method)
at androidx.appcompat.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:409)
at android.view.View.performClick(View.java:6256)
at android.view.View$PerformClick.run(View.java:24701)
at android.os.Handler.handleCallback(Handler.java:789)
at android.os.Handler.dispatchMessage(Handler.java:98)
at android.os.Looper.loop(Looper.java:164)
at android.app.ActivityThread.main(ActivityThread.java:6541)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:240)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:767)
Caused by: android.content.ActivityNotFoundException: Unable to find explicit activity class {pjurado.com.a05reciclerviewobjeto/pjurado.com.a05reciclerviewobjeto.AdapterDirectorio}; have you declared this activity in your AndroidManifest.xml?
at android.app.Instrumentation.checkStartActivityResult(Instrumentation.java:1932)
at android.app.Instrumentation.execStartActivity(Instrumentation.java:1615)
at android.app.Activity.startActivityForResult(Activity.java:4472)
at androidx.fragment.app.FragmentActivity.startActivityForResult(FragmentActivity.java:676)
at android.app.Activity.startActivityForResult(Activity.java:4430)
at androidx.fragment.app.FragmentActivity.startActivityForResult(FragmentActivity.java:663)
at android.app.Activity.startActivity(Activity.java:4791)
at android.app.Activity.startActivity(Activity.java:4759)
at pjurado.com.a05reciclerviewobjeto.Editar.onClick(Editar.java:24)
Android_manifest.xml
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="pjurado.com.a05reciclerviewobjeto">
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name=".Editar" />
</application>
</manifest>
AdapterDirectorio.java
package pjurado.com.a05reciclerviewobjeto;
import android.content.Context;
import android.content.Intent;
import android.net.Uri;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageButton;
import android.widget.ImageView;
import android.widget.TextView;
import androidx.annotation.NonNull;
import androidx.recyclerview.widget.RecyclerView;
import java.util.ArrayList;
public class AdapterDirectorio extends RecyclerView.Adapter<AdapterDirectorio.MyViewHolder> {
private ArrayList<Contacto> directorio;
public AdapterDirectorio(ArrayList directorio){
this.directorio = directorio;
}
@NonNull
@Override
public MyViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View view = LayoutInflater.from(parent.getContext())
.inflate(R.layout.item_list, parent, false);
return new MyViewHolder(view);
}
@Override
public void onBindViewHolder(@NonNull final MyViewHolder holder, int position) {
holder.etNombre.setText(directorio.get(position).getNombre());
holder.etTelefono.setText(directorio.get(position).getTelefono());
holder.etEmail.setText(directorio.get(position).getEmail());
holder.ivFoto.setImageResource(directorio.get(position).getFoto());
holder.botonLlamar.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String phoneNo = holder.etTelefono.getText().toString();
String num = "tel:" + phoneNo;
holder.context.startActivity(new Intent(Intent.ACTION_DIAL, Uri.parse(num)));
}
});
holder.botonEmail.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String[] email= {holder.etEmail.getText().toString()};
Intent i= new Intent(Intent.ACTION_SEND)
.setData(Uri.parse("mailto:"))
.setType("text/plain")
.putExtra(Intent.EXTRA_EMAIL, email)
.putExtra(Intent.EXTRA_SUBJECT, "Hello")
.putExtra(Intent.EXTRA_TEXT, "HELLO WORLD");
holder.context.startActivity(Intent.createChooser(i,"Enviar email"));
}
});
holder.botonEditar.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(holder.context, Editar.class);
holder.context.startActivity(intent);
}
});
}
@Override
public int getItemCount() {
return directorio.size();
}
public class MyViewHolder extends RecyclerView.ViewHolder {
public View mView;
public TextView etNombre;
public TextView etTelefono;
public TextView etEmail;
public ImageView ivFoto;
public ImageButton botonLlamar;
public ImageButton botonEmail;
public ImageButton botonEditar;
public Context context;
public MyViewHolder(@NonNull View itemView) {
super(itemView);
mView = itemView;
etNombre = mView.findViewById(R.id.textViewNombre);
etTelefono = mView.findViewById(R.id.textViewTelefono);
etEmail = mView.findViewById(R.id.textViewEmail);
ivFoto = mView.findViewById(R.id.imageView);
botonLlamar = (ImageButton) mView.findViewById(R.id.imageButton5);
botonEmail = (ImageButton) mView.findViewById(R.id.imageButton4);
botonEditar = (ImageButton) mView.findViewById(R.id.botonEdicion);
context = itemView.getContext();
}
}
}
Contacto.java
package pjurado.com.a05reciclerviewobjeto;
public class Contacto {
private String Nombre;
private String Telefono;
private String email;
private int foto;
public int getFoto() {
return foto;
}
public void setFoto(int foto) {
this.foto = foto;
}
public Contacto(String nombre, String telefono, String email, int foto) {
Nombre = nombre;
Telefono = telefono;
this.email = email;
this.foto = foto;
}
public String getNombre() {
return Nombre;
}
public void setNombre(String nombre) {
Nombre = nombre;
}
public String getTelefono() {
return Telefono;
}
public void setTelefono(String telefono) {
Telefono = telefono;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
}
Editar.java
package pjurado.com.a05reciclerviewobjeto;
import android.content.Intent;
import android.os.Bundle;
import android.os.PersistableBundle;
import android.util.Log;
import android.view.View;
import androidx.annotation.Nullable;
import androidx.appcompat.app.AppCompatActivity;
public class Editar extends AppCompatActivity {
@Override
public void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.modificacion);
}
public void onClick(View v){
Intent intent = new Intent(Editar.this, AdapterDirectorio.class);
startActivity(intent);
}
}
```
```
mainActivity.java
package pjurado.com.a05reciclerviewobjeto;
import androidx.appcompat.app.AppCompatActivity;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import android.content.Intent;
import android.media.Image;
import android.net.Uri;
import android.os.Bundle;
import android.view.View;
import android.widget.ImageButton;
import java.util.ArrayList;
import static androidx.core.content.ContextCompat.startActivity;
public class MainActivity extends AppCompatActivity {
private ArrayList<Contacto> directorio = new ArrayList<>();
private RecyclerView myRecyclerView;
private AdapterDirectorio myAdapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
creaDatos();
myRecyclerView = findViewById(R.id.recyclerView);
myRecyclerView.setHasFixedSize(true);
LinearLayoutManager layoutManager = new LinearLayoutManager(this);
myRecyclerView.setLayoutManager(layoutManager);
myAdapter = new AdapterDirectorio(directorio);
myRecyclerView.setAdapter(myAdapter);
}
private void creaDatos(){
directorio.add(new Contacto("Pedro Jurado", "987123456", "pjurado@gmail.com", R.drawable.foto));
directorio.add(new Contacto("Pepe Pérez", "987121256", "ppe@gmail.com", R.drawable.foto));
directorio.add(new Contacto("Antonio Gómex", "934643456", "aoox@gmail.com", R.drawable.foto));
directorio.add(new Contacto("Antonio Gómex", "934643456", "aoox@gmail.com", R.drawable.foto));
directorio.add(new Contacto("Antonio Gómex", "934643456", "aoox@gmail.com", R.drawable.foto));
directorio.add(new Contacto("Antonio Gómex", "934643456", "aoox@gmail.com", R.drawable.foto));
directorio.add(new Contacto("Antonio Gómex", "934643456", "aoox@gmail.com", R.drawable.foto));
directorio.add(new Contacto("Antonio Gómex", "934643456", "aoox@gmail.com", R.drawable.foto));
directorio.add(new Contacto("Antonio Gómex", "934643456", "aoox@gmail.com", R.drawable.foto));
directorio.add(new Contacto("Antonio Gómex", "934643456", "aoox@gmail.com", R.drawable.foto));
}
}
activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout 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:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/recyclerView"
android:layout_width="match_parent"
android:layout_height="match_parent" />
</FrameLayout>
item_list.xml
<?xml version="1.0" encoding="utf-8"?>
<androidx.cardview.widget.CardView
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:card_view="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:elevation="@dimen/cardview_default_elevation"
android:layout_marginBottom="8dp"
android:padding="10dp"
card_view:cardBackgroundColor="@color/colorPrimary">
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal">
<ImageView
android:id="@+id/imageView"
android:layout_width="48dp"
android:layout_height="48dp"
tools:srcCompat="@tools:sample/avatars" />
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical">
<TextView
android:id="@+id/textViewNombre"
android:layout_width="497dp"
android:layout_height="wrap_content"
android:layout_margin="10dp"
android:textColor="@android:color/white"
android:textSize="18sp" />
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:id="@+id/textViewTelefono"
android:layout_width="164dp"
android:layout_height="51dp"
android:layout_margin="10dp"
android:layout_marginTop="8dp"
android:textColor="@android:color/white"
card_view:layout_constraintEnd_toStartOf="@+id/imageButton5"
card_view:layout_constraintHorizontal_bias="0.0"
card_view:layout_constraintStart_toStartOf="parent"
card_view:layout_constraintTop_toTopOf="parent" />
<ImageButton
android:id="@+id/imageButton5"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="10dp"
android:layout_weight="1"
android:background="@drawable/boton_redondo"
android:visibility="visible"
card_view:layout_constraintBottom_toBottomOf="parent"
card_view:layout_constraintEnd_toStartOf="@+id/imageButton4"
card_view:layout_constraintTop_toTopOf="parent"
card_view:srcCompat="@android:drawable/ic_menu_call" />
<ImageButton
android:id="@+id/imageButton4"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="10dp"
android:layout_marginEnd="8dp"
android:background="@drawable/boton_redondo"
android:contentDescription="TODO"
android:visibility="visible"
card_view:layout_constraintBottom_toBottomOf="parent"
card_view:layout_constraintEnd_toStartOf="@+id/botonEdicion"
card_view:layout_constraintTop_toTopOf="parent"
card_view:srcCompat="@android:drawable/ic_dialog_email" />
<ImageButton
android:id="@+id/botonEdicion"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="10dp"
android:layout_weight="1"
android:background="@drawable/boton_redondo"
android:visibility="visible"
card_view:layout_constraintBottom_toBottomOf="parent"
card_view:layout_constraintEnd_toEndOf="parent"
card_view:layout_constraintTop_toTopOf="parent"
card_view:srcCompat="@android:drawable/ic_menu_edit" />
</androidx.constraintlayout.widget.ConstraintLayout>
<LinearLayout
android:layout_width="395dp"
android:layout_height="wrap_content"
android:orientation="horizontal">
</LinearLayout>
<TextView
android:id="@+id/textViewEmail"
android:layout_width="494dp"
android:layout_height="wrap_content"
android:layout_margin="10dp"
android:textColor="@android:color/white" />
</LinearLayout>
</LinearLayout>
</androidx.cardview.widget.CardView>
modificacion.xml
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout 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:layout_width="match_parent"
android:layout_height="match_parent">
<EditText
android:id="@+id/editText1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="88dp"
android:ems="10"
android:hint="Nombre y apellidos"
android:inputType="textPersonName"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.079"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<EditText
android:id="@+id/editText2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="16dp"
android:ems="10"
android:hint="Email"
android:inputType="textPersonName"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.079"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/editText3" />
<EditText
android:id="@+id/editText3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="24dp"
android:ems="10"
android:hint="Telefono"
android:inputType="textPersonName"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.079"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/editText1" />
<TextView
android:id="@+id/textView6"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="28dp"
android:text="Modificación de datos"
android:textColor="#000000"
android:textSize="25sp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.098"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<Button
android:id="@+id/buttonAceptacion"
android:layout_width="165dp"
android:layout_height="46dp"
android:layout_marginTop="28dp"
android:onClick="onClick"
android:text="Confrimar"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/editText2" />
</androidx.constraintlayout.widget.ConstraintLayout>
boton_redondo.xml
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="oval">
<solid android:color="#ffffff"></solid>
<size android:height="50dp" android:width="50dp"></size>
</shape>
答案 0 :(得分:0)
您正在意图中调用适配器,应在其中调用活动。您在MainActivity.java中正确设置了适配器。考虑需要为Editar.java调用哪个类,并用该特定活动(即ModificationActivity.java
)替换AdapterDirectorio.class。public void onClick(View v){
Intent intent = new Intent(Editar.this, ModificationActivity.class);
startActivity(intent);
}