Android java onClick No se pudo ejecutar el método de la actividad

Esta es mi primera vez que trabajo con el recyclerview y estoy recibiendo algunos errores sobre android:onClick="addItem" aquí es lo que consigo cuando intento agregar una línea de texto a mi recyclerview. Usualmente uso mi teléfono para probar mis aplicaciones.

 java.lang.IllegalStateException: Could not execute method of the activity at android.view.View$1.onClick(View.java:4012) at android.view.View.performClick(View.java:4761) at android.view.View$PerformClick.run(View.java:19767) at android.os.Handler.handleCallback(Handler.java:739) at android.os.Handler.dispatchMessage(Handler.java:95) at android.os.Looper.loop(Looper.java:135) at android.app.ActivityThread.main(ActivityThread.java:5312) at java.lang.reflect.Method.invoke(Native Method) at java.lang.reflect.Method.invoke(Method.java:372) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:901) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:696) Caused by: java.lang.reflect.InvocationTargetException at java.lang.reflect.Method.invoke(Native Method) at java.lang.reflect.Method.invoke(Method.java:372) at android.view.View$1.onClick(View.java:4007)            at android.view.View.performClick(View.java:4761)            at android.view.View$PerformClick.run(View.java:19767)            at android.os.Handler.handleCallback(Handler.java:739)            at android.os.Handler.dispatchMessage(Handler.java:95)            at android.os.Looper.loop(Looper.java:135)            at android.app.ActivityThread.main(ActivityThread.java:5312)            at java.lang.reflect.Method.invoke(Native Method)            at java.lang.reflect.Method.invoke(Method.java:372)            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:901)            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:696) Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'android.text.Editable android.widget.EditText.getText()' on a null object reference at com.sapps.app.testapp2.MainActivity.addItem(MainActivity.java:53)            at java.lang.reflect.Method.invoke(Native Method)            at java.lang.reflect.Method.invoke(Method.java:372)            at android.view.View$1.onClick(View.java:4007)            at android.view.View.performClick(View.java:4761)            at android.view.View$PerformClick.run(View.java:19767)            at android.os.Handler.handleCallback(Handler.java:739)            at android.os.Handler.dispatchMessage(Handler.java:95)            at android.os.Looper.loop(Looper.java:135)            at android.app.ActivityThread.main(ActivityThread.java:5312)            at java.lang.reflect.Method.invoke(Native Method)            at java.lang.reflect.Method.invoke(Method.java:372)            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:901)            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:696) 

Aquí está mi código donde creo que es el error, pero no sé exactamente:

  public class MainActivity extends ActionBarActivity { private EditText mText; private RecyclerView.LayoutManager mLayoutManager; private RecyclerView recyclerView; private Button btn; private CustomRecyclerAdapter mAdapter; private List<Data> mData = new ArrayList<>(); @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); // Initializing views. mText = (EditText) findViewById(R.id.textEt); recyclerView = (RecyclerView) findViewById(R.id.recycler); // If the size of views will not change as the data changes. recyclerView.setHasFixedSize(true); // Setting the LayoutManager. mLayoutManager = new LinearLayoutManager(this); recyclerView.setLayoutManager(mLayoutManager); // Setting the adapter. CustomRecyclerAdapter mAdapter = new CustomRecyclerAdapter(); recyclerView.setAdapter(mAdapter); } // Called when add button is clicked. public void addItem(View v) { if(mText!=null) { Data dataToAdd = new Data(mText.getText().toString()); mData.add(dataToAdd); } } 

}

Y aquí está mi adaptador de recyclerview para saber con seguridad:

 public class CustomRecyclerAdapter extends RecyclerView.Adapter<RecyclerViewHolder> { CustomRecyclerAdapter mAdapter; private List<Data> mData = Collections.emptyList(); public CustomRecyclerAdapter() { // Pass context or other static stuff that will be needed. } public void updateList(List<Data> data) { mData = data; notifyDataSetChanged(); } @Override public int getItemCount() { return mData.size(); } @Override public RecyclerViewHolder onCreateViewHolder(ViewGroup viewGroup, int position) { LayoutInflater inflater = LayoutInflater.from(viewGroup.getContext()); View itemView = inflater.inflate(R.layout.list_item, viewGroup, false); return new RecyclerViewHolder(itemView); } @Override public void onBindViewHolder(RecyclerViewHolder viewHolder, int position) { viewHolder.title.setText(mData.get(position).text); } public void addItemInRec(int position, Data data) { mData.add(data); notifyItemInserted(position); } public void removeItem(int position) { mData.remove(position); notifyItemRemoved(position); } } 

Mi archivo xml de MainActivity:

 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent" tools:context=".MainActivity"> <LinearLayout android:orientation="horizontal" android:layout_width="match_parent" android:layout_height="wrap_content"> <EditText android:id="@+id/textEt" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:hint="Text"/> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Add" android:onClick="addItem"/> </LinearLayout> <android.support.v7.widget.RecyclerView android:id="@+id/recycler" android:layout_width="match_parent" android:layout_height="match_parent" android:scrollbars="vertical"/> </LinearLayout> 

Tal vez sea mi ViewHolder:

 public class RecyclerViewHolder extends RecyclerView.ViewHolder { public TextView title; public RecyclerViewHolder(View itemView) { super(itemView); title = (TextView) itemView.findViewById(R.id.title); } } 

O la clase Data.java:

 public class Data { public String text; public Data(String text) { this.text = text; } } 

Usted está recibiendo un puntero nulo en la llamada getText()

Significa la siguiente línea:

 EditText mText = (EditText) findViewById(R.id.textEt); 

Devuelve null, la solución es comprobar y corregir el diseño para que textEt está en él.

Editar:

Si está seguro de que está en la eliminación de diseño, elimine la declaración de EditText .

Declare como private EditText mText; En el ámbito de la clase

 setContentView(R.layout.name_of_layout_here); mText = (EditText) findViewById(R.id.textEt); 

La clave está en su mensaje de error:

 Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'android.text.Editable android.widget.EditText.getText()' on a null object reference at com.sapps.app.testapp2.MainActivity.addItem(MainActivity.java:53) 

Un buen consejo para aprender de su salida de error es mirar cada sentencia "Caused by" y explorar a través del registro hasta que encuentre uno de sus propios archivos referenciados. A continuación, esa parte del registro de errores incluso le dirá qué línea su código fallaba (en este caso es la línea 53 en MainActivity.java).

Una excepción de puntero nulo en Java es cuando intenta llamar a un método en algún objeto 'A', pero ese objeto 'A' es actualmente null .

Por lo que este mensaje de error significa: "En la línea 53 de MainActivity.java, trató de llamar a un método en algún objeto que no existe todavía, por lo que se estrelló."

El método que está fallando es EditText mText = (EditText) findViewById(R.id.textEt);

Por lo general, este tipo de falla significa que no está encontrando la ID correcta de su diseño. Compruebe que textEt es el ID correcto para este elemento de diseño.

EDITAR:

Aún no estoy seguro de por qué sus vistas no se están poblando, pero sí noté un error con su adaptador. Usted está redefiniendo mAdapter , por lo que tiene 2 copias, una en el ámbito local y una como miembro de MainActivity. Esto definitivamente va a estropear las cosas.

Aquí:

 // Setting the adapter. CustomRecyclerAdapter mAdapter = new CustomRecyclerAdapter(); recyclerView.setAdapter(mAdapter) 

Está redefiniendo mAdapter localmente. Haga esto en su lugar:

 // Setting the adapter. mAdapter = new CustomRecyclerAdapter(); recyclerView.setAdapter(mAdapter) 
  • Lectura de un archivo .xml desde sdcard
  • Android: incluye un xml en otro xml
  • Cambiar el color de la barra de notificación
  • ¿Se refiere a una cadena de otra cadena en strings.xml?
  • ¿Cómo funciona el atributo androide Xml android: onClick = "..." trabajo detrás de las escenas?
  • La biblioteca appcompat importada tiene errores
  • Android: verifica la firma de XML
  • Ancho del elemento RecyclerView layout_width = "match_parent" no coincide con el padre
  • Todos los iconos de ActionMode Bar no se muestran en Android?
  • Import xml en otro xml
  • Cómo cambiar el color del texto del botón de radio en Android?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.