Фрагмент реализует OnClickListener
У меня есть приложение, которое я модернизирую. Один шаг этого процесса меняется на макет, основанный на фрагменте (с использованием фрагментов из библиотеки поддержки).
Я преобразовал свои действия в фрагменты и получил макет, прекрасно работающий (используя ViewPager, классный материал!)
У меня были мои действия для реализации OnClickListener для всех моих проблем с нажатием кнопки. У меня есть новые воплощения Fragment, которые делают то же самое, конечно, но похоже, что "onClick" никогда не попадает. Есть ли что-то особенное в отношении фрагментов, которые мешают им работать таким образом?
Ответы
Ответ 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;
}