如何删除注入的视图?

时间:2016-07-15 03:32:21

标签: java android android-layout butterknife

我有以下布局activity_main.xml

<merge
  xmlns:android="http://schemas.android.com/apk/res/android"
  xmlns:app="http://schemas.android.com/apk/res-auto"
  xmlns:tools="http://schemas.android.com/tools">

  <com.lorentzos.flingswipe.SwipeFlingAdapterView
     android:id="@+id/frame"
     android:background="#d1d1d1"
     android:layout_width="match_parent"
     android:layout_height="match_parent"
     app:rotation_degrees="15.5"
     tools:context=".MainActivity"
     android:layout_gravity="top"/>

  <TextView
     android:id="@+id/tv_noJobsLabel"
     android:layout_width="wrap_content"
     android:layout_height="wrap_content"
     android:padding="10dp"
     android:textStyle="bold"
     android:textSize="18sp"
     android:textColor="#474747"
     android:textAlignment="center"
     tools:text="Nothing Left to Swipe!"
     android:layout_gravity="center" />

  <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
     android:id="@+id/fragment_container"
     android:layout_width="match_parent"
     android:layout_height="match_parent" />

  <include layout="@layout/buttons" />

</merge>

在我的main activity中,我使用ButterKnife进行了以下注射代码:

setContentView(R.layout.activity_main);
ButterKnife.inject(this);

我想删除布局的<include>部分,因为我不再需要这些按钮,但是,当我删除<include>行时,我收到以下错误:

java.lang.RuntimeException: Unable to start activity ComponentInfo{com.lorentzos.swipecards.example/com.lorentzos.swipecards.MainActivity}: java.lang.RuntimeException: Unable to inject views for com.lorentzos.swipecards.MainActivity@f356341

我做错了什么? 我有理由不能删除<include>吗?

修改

@InjectView(R.id.frame) SwipeFlingAdapterView flingContainer;

protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);

  //Remove title bar
  //this.requestWindowFeature(Window.FEATURE_NO_TITLE);

  //color the notification bar with our company colors
  Window window = this.getWindow();
  window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
  window.clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
  window.setStatusBarColor(this.getResources().getColor(R.color.laborswipe_notificationbar));

  //remove title from action bar and add the logo to the top left of the action bar
  setUpActionBar();

  setContentView(R.layout.activity_main);
  ButterKnife.inject(this);

1 个答案:

答案 0 :(得分:1)

删除<include layout=.../>后,还要从活动中的布局中删除绑定视图。

注意: 使用ButterKnife绑定视图意味着您在main activity中使用绑定代码在布局中拥有视图。所以应该有一个代码:

@BindView(R.id.your_view_in_include_button) View yourViewName;

根据“包含布局”中的视图删除它。 然后重建你的应用程序。

建议:
将您的ButterKnife升级到当前版本。