Подтвердить что ты не робот

Фрагмент реализует OnClickListener

У меня есть приложение, которое я модернизирую. Один шаг этого процесса меняется на макет, основанный на фрагменте (с использованием фрагментов из библиотеки поддержки). Я преобразовал свои действия в фрагменты и получил макет, прекрасно работающий (используя ViewPager, классный материал!)

У меня были мои действия для реализации OnClickListener для всех моих проблем с нажатием кнопки. У меня есть новые воплощения Fragment, которые делают то же самое, конечно, но похоже, что "onClick" никогда не попадает. Есть ли что-то особенное в отношении фрагментов, которые мешают им работать таким образом?

4b9b3361

Ответ 1

Просто сделайте это

public class fragmentOne extends Fragment implements OnClickListener {
    Button myButton;

    @Override
    public View OnCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedinstanceState) {
        View myView = inflater.inflate(R.layout.fragment_1, container, false);
        myButton = (Button) myView.findViewById(R.id.myButton);
        myButton.setOnClickListener(this);
        return myView;
    }

    @Override
    public void onClick(View v) {
        // implements your things
    }
}

очень просто

Ответ 2

Я сосредоточусь на использовании действия OnClick для глобального доступа. Вы должны сделать так, как это ваш проект, должен реализовать View.OnClickListener, а затем переопределить метод OnClick(). В OnCreateView() необходимо выполнить следующие действия: button_submit.setOnClickListener(this); для просмотра, который вам нужен,  Пожалуйста, ознакомьтесь с нижеприведенным кодом для "Очистить ответ", "Спасибо".

public class New_Project extends Fragment implements View.OnClickListener{

                private View mView;
                private EditText edttxt_projectname;
                private Button button_submit;

                @Override
                public View onCreateView(LayoutInflater inflater, ViewGroup container,
                        Bundle savedInstanceState) {

                    mView = inflater.inflate(R.layout.fragment_newproject, container,false);
                    edttxt_projectname=(EditText)mView.findViewById(R.id.edttxt_projectname);
                    button_submit=(Button)mView.findViewById(R.id.button_submit);

                    button_submit.setOnClickListener(this);

                    return mView;
                }


                @Override
                public void onClick(View v) {
                    switch (v.getId()) {
                    case R.id.button_submit:
                        edttxt_projectname.setText("Test Submit!#@%!#%");
                        break;
                default:
                        break;
                    }

                }
    }

Ответ 3

Я хочу прокомментировать ответ Abhijit Chakra, но мне кажется, что для этого мне нужно 50 повторений. Для тех, кто задается вопросом, не можете ли вы использовать ответ Абхиджит, это из-за:

public void OnClick(View v) {
    // implements your things
}

Вам нужно убедиться, что он включен, а не OnClick. К счастью, внутреннее сообщение об ошибке Android Studio приходит на помощь.

Ответ 4

view.setOnLongClickListener(new View.OnLongClickListener() {
  @Override
  public boolean onLongClick(View v) {
    switch (v.getId()) {
      case R.id.imgView1:
        Toast.makeText(getActivity(), "Long pressing", Toast.LENGTH_SHORT).show();
        updateImage();
        break;
      case R.id.imgView2:
        Toast.makeText(getActivity(), "Long pressing", Toast.LENGTH_SHORT).show();
        updateImage();
        break;
      case R.id.imgView3:
        Toast.makeText(getActivity(), "Long pressing", Toast.LENGTH_SHORT).show();
        updateImage();
        break;
      default:
        break;
    }