OnClickListener no funciona en fragmento
Tengo algunos problemas con el onClicklistener en el fragmento. Si hago clic en el botón nada sucede en absoluto. No obtengo ni un mensaje de la onClicklistener en Logcat ni un Toast aparecen en la pantalla, pero no puedo encontrar el error en el código. ¿Algunas ideas?
¡Agradecería cualquier ayuda! ¡Muchas gracias! Y lo siento por mi mal ingles
- Cómo implementar OnTouch Listener en XML
- ListView no responde a los eventos de clics en Android
- Agregar un oyente a un botón dentro de un alerta de alerta personalizado bloquea mi aplicación
- ¿Cómo dejar pasar el evento a container en android?
- OnClick listener a una imagen ListView - Android
import android.app.Fragment; import android.os.Bundle; import android.view.LayoutInflater; import android.view.View; import android.view.View.OnClickListener; import android.view.ViewGroup; import android.widget.EditText; import android.widget.Button; import android.widget.Toast; import android.util.Log; public class InputFragment extends Fragment { EditText input_text; String text; Button translate_button; @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View InputFragmentView = inflater.inflate(R.layout.input_fgmt, container, false); input_text = (EditText) InputFragmentView.findViewById(R.id.input_field); translate_button = (Button) InputFragmentView.findViewById(R.id.translate); translate_button.setOnClickListener(new OnClickListener() { @Override public void onClick(View view) { Log.d("Test", "onClickListener ist gestartet"); Toast.makeText(getActivity().getApplicationContext(), "Test", Toast.LENGTH_LONG).show(); saveInString(); } }); return inflater.inflate(R.layout.input_fgmt, container, false); } public void saveInString() { if(text.equals(null)) { Toast.makeText(getActivity().getApplicationContext(), "Das Feld ist leer!", Toast.LENGTH_SHORT).show(); } else { Toast.makeText(getActivity().getApplicationContext(), "Speichern...", Toast.LENGTH_LONG).show(); text = input_text.getText().toString(); Toast.makeText(getActivity().getApplicationContext(), "Fertig", Toast.LENGTH_SHORT).show(); } } }
- Android OnClickListener no disparar para el botón en Layout independiente
- Cómo quitar un elemento seleccionado de ListView utilizando CursorAdapter
- Cómo configurar OnClickListener para ScrollView?
- OnClickListener para CardView?
- Iniciación de inicio desde onclicklistener
- Agregar un oyente a un widget selector de números
- ¿Cómo evitar múltiples botones al mismo tiempo en android?
- OnClickListener del primer elemento de GridView no funciona
Creo que el problema está aquí en su código
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { ..... .... //problem is here below line return inflater.inflate(R.layout.input_fgmt, container, false); }
Devuelve tu vista ya inflada
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { ..... .... return InputFragmentView; }
cambio
return inflater.inflate(R.layout.input_fgmt, container, false);
a
return InputFragmentView ;
También cambia con esto:
translate_button.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { Log.d("Test", "onClickListener ist gestartet"); Toast.makeText(getActivity().getApplicationContext(), "Test", Toast.LENGTH_LONG).show(); saveInString(); } });
Y la importación como una importación android.view.View;
Hacer esto cambia a su código
-
En la definición de clase:
public class InputFragment extends Fragment implements View.OnClickListener
-
Al llamar a setOnClickListener:
translate_button.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View InputFragmentView) { Log.d("Test", "onClickListener ist gestartet"); Toast.makeText(getActivity().getApplicationContext(), "Test", Toast.LENGTH_LONG).show(); saveInString(); } });
La mejor manera de obtener todas las vistas creadas debe redefinir el método:
@Override public void onActivityCreated(Bundle saved) { super.onActivityCreated(saved); input_text = (EditText) InputFragmentView.findViewById(R.id.input_field); translate_button = (Button) InputFragmentView.findViewById(R.id.translate); translate_button.setOnClickListener(new OnClickListener() { @Override public void onClick(View view) { Log.d("Test", "onClickListener ist gestartet"); Toast.makeText(getActivity().getApplicationContext(), "Test", Toast.LENGTH_LONG).show(); saveInString(); } });
Porque este methode llamado después de toda la vista se han creado. Usted debe leer el ciclo de vida de Fragmento.