У меня есть фрагмент, общающийся с активностью. Этот фрагмент имеет несколько кнопок, один из которых - «игра». Я установил onClickListener, когда я нажимаю кнопку, и я также передал интерфейс слушателя активности, чтобы обрабатывать действия после нажатия кнопки.Извлечь представление в OnClickListener
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_header, container, false);
play = (Button)view.findViewById(R.id.play);
play.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
listener.onButtonPressed(v);
}
});
public interface OnButtonPressedListener {
public void onButtonPressed(View v);
}
Проблема заключается в том, что после того, как о деятельности, когда я реализовать интерфейс слушателя, это принимает вид «V», что I've передается при нажатии на кнопку. Затем я пытаюсь сравнить это представление, которое я получаю к конкретной кнопке, вызвавшей вызов, просто чтобы убедиться, что кнопка, которую я нажал, поскольку несколько кнопок имеют один и тот же интерфейс. По какой-то причине это сравнение не работает должным образом, но сам интерфейс прослушивателя отлично работает. Не могли бы вы рассказать мне, что я делаю неправильно с этими парнями? Это интерфейс слушателя на моей деятельности:
@Override
public void onButtonPressed(View v) {
HeaderFragment h= new HeaderFragment();
if (v==h.play){
Toast.makeText(this,"View SI",Toast.LENGTH_LONG).show();
if (mediaPlayer!=null){
Спасибо за ответ. Я буду создавать разные вызовы в зависимости от нажатой кнопки. Я знаю, что это решило бы проблему, так как мне больше не придется сравнивать кнопки, но в любом случае, знаете ли вы, как решить проблему, когда я сравниваю представление с объектом фрагмента? –
Во-первых, вы не должны это делать. Я показал вам правильный путь, но если вы все еще хотите использовать только одного слушателя, вы можете сравнить идентификаторы вида. if (v.getId() == R.id.play) {do your stuff} – HellCat2405
Я знаю, но мне нужно было получить представление фрагмента для других задач в будущем, вот почему я спросил. Я использовал ваш ответ, чтобы решить проблему, спасибо! –