代码之家  ›  专栏  ›  技术社区  ›  BRDroid

在Android中使用Butterknife

  •  1
  • BRDroid  · 技术社区  · 6 年前

    我正在尝试在Android中使用Butterknife,它似乎不起作用。你能告诉我哪里做错了吗。

    我试图在“OnClick”内部放置一个调试点,但似乎没有出现。

    Gradle依存关系(应用程序)

     compile 'com.jakewharton:butterknife:8.8.1'
        annotationProcessor 'com.jakewharton:butterknife-compiler:8.8.1'
    

    活动_main。xml

       <LinearLayout
            android:id="@+id/action_container"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="horizontal"
            android:layout_below="@+id/fragment_container"
            android:weightSum="2">
            <Button
                android:id="@+id/btn_frg_one"
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:text="Fragment One"/>
            <Button
                android:id="@+id/btn_frg_two"
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:text="Frag Two"/>
        </LinearLayout>
    

    主要活动。Java语言

    @OnClick({R.id.btn_frg_one, R.id.btn_frg_two})
        public void addFrgToCon(View view){
            switch (view.getId()){
                case R.id.btn_frg_one:
                    addFragment(new FOne());
                    break;
                case R.id.btn_frg_two:
                    addFragment(new FTwo());
                    break;
            }
        }
    
        public void addFragment(Fragment fragment){
            FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
            transaction.replace(R.id.fragment_container, fragment);
            transaction.addToBackStack(null);
            transaction.commit();
        }
    
    2 回复  |  直到 6 年前
        1
  •  2
  •   Goku Farhana Naaz Ansari    6 年前

    我想你忘了这个

    ButterKnife.bind(this);

    有关更多信息,请阅读 Butternife

        2
  •  0
  •   Nipuna Rajapaksha    6 年前
    > use ButterKnife.bind(this);
    > 
    > 
    > Other provided binding APIs:
    > 
    >     Bind arbitrary objects using an activity as the view root. If you use a pattern like MVC you can bind the controller using its activity
    > with ButterKnife.bind(this, activity).
    > 
    >     Bind a view's children into fields using ButterKnife.bind(this). If you use <merge> tags in a layout and inflate in a custom view
    > constructor you can call this immediately after. Alternatively, custom
    > view types inflated from XML can use it in the onFinishInflate()
    > callback.