新的View.OnClickListener和新的OnClickListener之间的区别

时间:2014-07-06 10:10:44

标签: android

我对这两个班级之间的差异感到好奇。 我的代码是......

    main_button.setOnClickListener(new OnClickListener(){
        public void onClick(View v){
            Log.d(MAINBOTTOM_FRAGMENT_TAG,"main button clicked!");
            FragmentManager fragmentManager = getFragmentManager();
            FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
            fblogin_Fragment = new FbLoginFragment();
            fragmentTransaction.replace(R.id.frag_container, fblogin_Fragment);
            fragmentTransaction.addToBackStack(null);
            fragmentTransaction.commit();    
        }
    });

    setting_button.setOnClickListener(new View.OnClickListener(){
        public void onClick(View v){
            Log.d(MAINBOTTOM_FRAGMENT_TAG,"setting button clicked!");
            FragmentManager fragmentManager = getFragmentManager();
            FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction(
            setting_Fragment = new SettingFragment();
            fragmentTransaction.replace(R.id.frag_container,setting_Fragment);
            fragmentTransaction.addToBackStack(null);
            fragmentTransaction.commit();   
        }
    });

项目运行良好,没什么特别的。但是,我有点困惑哪一个使用它。 OnClickListener或View.OnClickListener? 感谢。

2 个答案:

答案 0 :(得分:4)

如果您导入View.OnClickListener,则两者都会引用同一个类,并且工作方式相同。

View.OnClickListener经常被用来区分DialogInterface.OnClickListener

答案 1 :(得分:0)

View.OnClickListener is an interface,您没有调用它,但会创建一个新实例(new View.OnClickListener()是对构造函数的调用)

您创建的实例是anonymous class implements View.OnClickListener,位于new View.OnClickListener()

下方的括号中

任何实现View.OnClickListener的类都必须实现其中声明的方法(例如onClick

setOnClickListener只保存对您提供的View.OnClickListener实例的引用,当有人单击该按钮时,您设置的侦听器的onClick方法将被调用。