Excepción de puntero nulo – Obtener el valor de EditarTexto

Esta es mi primera pregunta aquí, me disculparé de antemano si no hice esta pregunta muy bien. He mirado mis otras preguntas similares a mi problema, pero no he encontrado una buena solución para satisfacer lo que está sucediendo en mi programa.

Así que mi problema es que estoy tratando de asignar un valor a una variable llamada, num1 de mi campo EditText llamado, num1TextField , pero no estoy teniendo ninguna suerte hasta ahora.

El segmento dentro de mi archivo java que lanza la excepción es:

 EditText num1Field = (EditText)v.findViewById(R.id.num1TextField); num1 = num1Field.getText().toString(); 

Aprecio cada contribución a este problema por adelantado.


Aquí está mi archivo fragment_compute.xml :

 <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <TextView android:id="@+id/textView1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentTop="true" android:layout_centerHorizontal="true" android:layout_marginTop="14dp" android:text="@string/compute_activity" android:textAppearance="?android:attr/textAppearanceLarge" /> <TextView android:id="@+id/textView2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@+id/textView1" android:layout_centerHorizontal="true" android:layout_marginTop="44dp" android:text="@string/num_1" android:textAppearance="?android:attr/textAppearanceMedium" /> <EditText android:id="@+id/num1TextField" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@+id/textView2" android:layout_centerHorizontal="true" android:ems="10" android:inputType="number" android:gravity="center" > <requestFocus /> </EditText> <EditText android:id="@+id/num2TextField" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignLeft="@+id/num1TextField" android:layout_below="@+id/textView3" android:ems="10" android:inputType="number" android:layout_centerHorizontal="true" android:gravity="center" > </EditText> <TextView android:id="@+id/textView4" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@+id/num2TextField" android:layout_centerHorizontal="true" android:layout_marginTop="22dp" android:text="@string/result" android:textAppearance="?android:attr/textAppearanceMedium" /> <TextView android:id="@+id/textView3" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@+id/num1TextField" android:layout_centerHorizontal="true" android:layout_marginTop="22dp" android:text="@string/num_2" android:textAppearance="?android:attr/textAppearanceMedium" /> <TextView android:id="@+id/result" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@+id/textView4" android:layout_centerHorizontal="true" android:layout_marginTop="22dp" /> <Button android:id="@+id/compute_multiply" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignRight="@+id/num2TextField" android:layout_below="@+id/result" android:layout_marginTop="40dp" android:text="@string/multiply" /> <Button android:id="@+id/compute_add" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignBaseline="@+id/compute_multiply" android:layout_alignBottom="@+id/compute_multiply" android:layout_alignLeft="@+id/num2TextField" android:text="@string/add" /> </RelativeLayout> 

Aquí está mi código de ComputeFragment.java :

 public class ComputeFragment extends Fragment { String num1; String num2; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); } @Override public View onCreateView(LayoutInflater inflater, ViewGroup parent, Bundle savedInstanceState) { View v = inflater.inflate(R.layout.fragment_compute, parent, false); // Add Button Button addButton = (Button)v.findViewById(R.id.compute_add); addButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { // ERROR STARTS HERE! EditText num1Field = (EditText)v.findViewById(R.id.num1TextField); num1 = num1Field.getText().toString(); // Null Pointer Exception is thrown here! EditText num2Field = (EditText)v.findViewById(R.id.num2TextField); num2 = num2Field.getText().toString(); // ERROR ENDS HERE! Intent i = new Intent(getActivity(), AddActivity.class); i.putExtra("x", num1); i.putExtra("y", num2); startActivityForResult(i,0); } }); return v; } } 

¡Gracias a todos y tengan un buen día!

El parámetro v en EditText num1Field = (EditText)v.findViewById(R.id.num1TextField); es su botón, no toda la vista.

Debe declarar la variable en onCreateView :

 final EditText num1Field = (EditText)v.findViewById(R.id.num1TextField); 

Y usarlo para obtener el valor en onClick

 num1 = num1Field.getText().toString(); 

La vista de parámetros es el botón. Si el botón está en el mismo padre que editTexts también podría hacer:

 View parentView = (View) view.getParent(); EditText num1TextField = (EditText)parentView.findViewById(R.id.num1TextField); 

Pruebe este código –

 @Override public void onClick(View view) { EditText num1Field = (EditText)v.findViewById(R.id.num1TextField); if(num1Field.getText().length() > 0) { num1 = num1Field.getText().toString(); } } 
  • EditText - Intervalo entre el texto y la línea de EditText
  • Cómo utilizar TransformationMethod en android
  • En EditText, aparece un diálogo al hacer clic en un subconjunto específico de texto
  • Barra de herramientas de selección de texto no visible en las versiones de pre-malvavisco sin ActionBar
  • Android EditText Personajes principales
  • Cómo evitar que aparezca el teclado para EditText que no está habilitado
  • Fuente de sugerencia de contraseña en Android
  • AfterTextChanged () se llama llamada de retorno sin que el texto se cambie realmente
  • Android EditText Multiline con SoftInputMode adjustPan
  • Cómo detectar emoticonos en EditText en android
  • Null keyevent y actionid = 0 en onEditorAction () (Jelly Bean / Nexus 7)
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.