简体   繁体   English

如何在 Android Studio 中使用接口对两个对象执行 onClickListener?

[英]How can I perform onClickListener on two object using interface in Android Studio?

I have a Fragment class which extends View.onClickListener and I have implement @overriden method ie onClick .我有一个 Fragment 类,它扩展View.onClickListener并且我已经实现了 @overriden方法,即onClick
I have 2 imageView which performs onClickListener .我有 2 个执行imageViewonClickListener

  1. filterIcon.setOnClickListener(this)
  2. fab.setOnClickListener(this)

And set both activities in @overriden method ie onClick() .并在@overriden方法即onClick()中设置这两个活动。

I want to know can this is possible that onClickListener will call the related clickEvent ?我想知道onClickListener是否有可能调用相关的clickEvent If yes, how?如果是,如何? If not, why?如果不是,为什么?

Here's my code:这是我的代码:

public class ExpenseFragment extends Fragment implements View.OnClickListener {
    private TextView totalExpenseTV;
    private FloatingActionButton fab;
    private RecyclerView recyclerView;
    private ImageView filterIcon;
    private PieChart pieChart;

    private Animation rotateForward, rotateBackward;

    private FirebaseRecyclerOptions<ExpenseModel> options;
    private MyAdapter adapter;

    private int calendarImgClick = 0;
    private int groceryClick = 0;
    private int bikeClick = 0;
    private int rentClick = 0;
    private int foodsClick = 0;
    private int beerClick = 0;
    private int setCalClick = 0;

    private String whichCategorySelected = "";
    private String selectedDate;

    public void onViewCreated(@NonNull View attachInParentView, Bundle savedInstanceState) {
        super.onViewCreated(attachInParentView, savedInstanceState);
        findViewByIDS(attachInParentView);
        setupRecyclerView();
        fabAnimation();
        fab.setOnClickListener(this);
        filterIcon.setOnClickListener(this);
        databaseListener();


    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        // Inflate the layout for this fragment
        return inflater.inflate(R.layout.fragment_expense, container, false);
    }

    @Override
    public void onClick(View view) {
        fab.startAnimation(rotateForward);
        rotateForward.setAnimationListener(new Animation.AnimationListener() {
            @Override
            public void onAnimationStart(Animation animation) {

            }

            @Override
            public void onAnimationEnd(Animation animation) {
                addNote();
            }

            @Override
            public void onAnimationRepeat(Animation animation) {

            }
        });
        filterIcon.setBackgroundResource(R.drawable.filter_off);
    }
@Override
public void onClick(View view) {
    if (view.getId() == R.id.filterIcon) {
        // codul care se executează când este apăsată imaginea filterIcon
    } else if (view.getId() == R.id.fab) {
        // codul care se executează când este apăsată imaginea fab
    }
}

The best practice using this way使用这种方式的最佳实践

@Override
public void onClick(View view) {
    when(view.getId){
        R.id.filterIcon -> {
            //do something
        }

        R.id.fab -> {
            //do something
        }
    }
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM