Обрабока нажатия кнопки в fragment

178
06 октября 2017, 14:52

Имею код:

public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
View v = inflater.inflate(R.layout.fragment_fragments2, null, false);
button = (Button) v.findViewById(R.id.button);
        return v;
}
public void onClick(View v) {
        Toast toast = Toast.makeText(getActivity(),
                "123!", Toast.LENGTH_SHORT);
        toast.show();
    }

Ошибка:

Could not find method onClick(View) in a parent or ancestor Context for android:onClick attribute defined on view class android.support.v7.widget.AppCompatButton with id 'button'

При нажатии кнопки выдает ошибку.В чем проблема?

Answer 1

Ну если таким способом, то наверное в методе onCreateView нужно вызвать метод OnClink и передать ему параметр button. То есть:

public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
View v = inflater.inflate(R.layout.fragment_fragments2, null, false);
button = (Button) v.findViewById(R.id.button);
onClick(button);
        return v;
}
public void onClick(View v) {
        Toast toast = Toast.makeText(getActivity(),
                "123!", Toast.LENGTH_SHORT);
        toast.show();
    }

В таком случае при создании фрагмента будет выводится "123!". Если вы хотите что бы при нажатии на кнопку проводились действия то лучше всего использовать setOnClickListener().

public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
View v = inflater.inflate(R.layout.fragment_fragments2, null, false);
button = (Button) v.findViewById(R.id.button);
button.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            //Ваши действия
        }
    });
        return v;
}
Answer 2
public class NameFragment extends Fragment implements View.OnClickListener {
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
View v = inflater.inflate(R.layout.fragment_fragments2, null, false);
button = (Button) v.findViewById(R.id.button);
button.setOnClickListener(this);
    return v;
}
public void onClick(View v) {
    Toast toast = Toast.makeText(getActivity(),
            "123!", Toast.LENGTH_SHORT);
    toast.show();
}
}
READ ALSO
Локальные переменные в C#

Локальные переменные в C#

Есть следующий код на C# (NET Core):

357
Передача значений в Style WPF

Передача значений в Style WPF

Как передать значения их элемента в стиль, который к нему привязан?

389
Проблема с передвижением объекта С#

Проблема с передвижением объекта С#

Здравствуйте! Я только начал разбираться с C#, хочу нарисовать движущийся кругНаписал такие методы:

261
Newtonsoft json

Newtonsoft json

Добрый вечер

301