OnClickListener not working in fragment

I have some problems with onClicklistener in fragment. If I click on the button, nothing happens. I do not receive a message from onClicklistener in Logcat, nor a toast appears on the screen, but I can not find the error in the code. Any ideas?

I would be grateful for any help! Thank you very much! And sorry for my bad english

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(); } } } 
+8
source share
5 answers

I think the problem is here in your code

 public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { ..... .... //problem is here below line return inflater.inflate(R.layout.input_fgmt, container, false); } 

bring back your already bloated look

  public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View inputFragmentView = inflater.inflate(R.layout.input_fgmt, container, false); ..... .... return inputFragmentView; } 
+27
source

change

  return inflater.inflate(R.layout.input_fgmt, container, false); 

to

  return InputFragmentView ; 

Also change this:

 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(); } }); 

and import as import android.view.View;

+3
source

This will change to your code.

  • by class definition:

      public class InputFragment extends Fragment implements View.OnClickListener 
  • when calling 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(); } }); 
+2
source

The best way to get all the views created is to override the method:

 @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(); } }); 

because this method is called after all representations. you should read the fragment life cycle.

+2
source

setOnItemClickListener works with me with a fragment instead of setOnClickListener

0
source

Source: https://habr.com/ru/post/954162/


All Articles