Articles of butterknife

Butterknife无法在我的Adapter类中绑定

我有一个适配器,用于绘制导航抽屉的布局。 我的导航抽屉包含两个内部xml文件:一个是Header ,另一个是Row 。 我在一个适配器中绘制这些,但是当我在我的头上尝试setText()时,我无法绑定。 这是我的适配器类: public class DrawerAdapter extends RecyclerView.Adapter { private static final int HEADER_TYPE = 0; private static final int ROW_TYPE = 1; private static Context context; private static DatabaseHelper databaseHelper; private List rows; private List icons; private String driverName; public DrawerAdapter(Context context, List rows, List icons, String driverName, DatabaseHelper databaseHelper) { […]

使用Butterknife注入一组视图

目前我有这一系列的观点: ImageView activityImageViews[] = { (ImageView) rootView.findViewById(R.id.img_activity_1), (ImageView) rootView.findViewById(R.id.img_activity_2), (ImageView) rootView.findViewById(R.id.img_activity_3), (ImageView) rootView.findViewById(R.id.img_activity_4) }; 有没有办法可以使用Butterknife来注入所有这些观点? 我需要将它们保存在一个数组中(或者以某种方式让它可以迭代它们)。

Butterknife 8.4.0在重新运行应用程序后找不到视图。 它得到一个NullPointerException

在Android Studio Butterknife.bind(this)中重新运行应用程序后,再也找不到视图了。 到目前为止,我find的唯一可靠解决方案是Cleaning/Rebuilding Project并再次运行。 然后它再次查找视图,直到下次重新运行。 到目前为止,这令人非常恼火,重建至少需要两分钟。 我有以下build.gradle android { compileSdkVersion 24 buildToolsVersion “25.0.0” defaultConfig { applicationId “xx” minSdkVersion 21 targetSdkVersion 24 versionCode x versionName “xxx” testInstrumentationRunner “android.support.test.runner.AndroidJUnitRunner” jackOptions { enabled true } } buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile(‘proguard-android.txt’), ‘proguard-rules.pro’ } } packagingOptions { exclude ‘META-INF/NOTICE’ exclude ‘META-INF/LICENSE’ } compileOptions { sourceCompatibility […]

ButterKnife onclick无效

我使用butterknife库完美地注入了视图。 但是当我尝试实现监听器时,例如onclick我无法实现它们。 以下java代码将帮助您了解我的问题。 Java代码: public class LoginActivity extends ActionBarActivity{ @InjectView(R.id.toolbar) Toolbar toolbar; @InjectView(R.id.btn_login) Button login; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.login); ButterKnife.inject(this); initialize(); //initListeners(); @OnClick(R.id.btn_login) public void submit(View view) { // TODO submit data to server… } } /*private void initListeners() { @OnClick(R.id.btn_login) public void login(){ } }*/ private void initialize() { setSupportActionBar(toolbar); […]

Butterknife View注射

我偶然发现了一个名为ButterKnife的非常有趣的dependency injection库。 使用ButterKnife可以很容易地将Views注入活动或片段。 class ExampleActivity extends Activity { @InjectView(R.id.title) TextView title; @InjectView(R.id.subtitle) TextView subtitle; @InjectView(R.id.footer) TextView footer; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.simple_activity); ButterKnife.inject(this); // TODO Use “injected” views… } } 但是,如果使用dependency injection,那些视图必须是public以便Butterknife可以注入它(使用private字段会导致exceptionfields must not be private or static )。 在我过去的项目中,我总是将所有成员字段(包括视图)设为private因为我认为这是最佳实践(信息隐藏等)现在我想知道是否有理由不应该public所有视图? 在这种情况下,我不能使用ButterKnife但我想使用它,因为它大大简化了代码。

带有可选ID的@OnClick数组(ButterKnife)

我有一个活动,当web请求完成时,它会使视图膨胀。 这个视图的一些小部件必须附加到一个onClick方法,所以我有: @OnClick({R.id.bt1, R.id.bt2, R.id.inflated_bt1, R.id.inflated_bt2}) public void onClick(View view) { // … } 当创建应用程序时,由于R.id.inflated_bt1和R.id.inflated_bt2不存在,它会抛出一个exception,建议设置@Optional注释。 找不到方法’onClick’的ID为XXXXXXXX的必需视图’inflated_bt1’。 如果此视图是可选的,请添加“@Optional”注释。 有没有办法用@Optional注释设置一些视图,并在视图膨胀时注入它们? 或者,还有另一种方法吗? 谢谢

AndroidStudio禁用“字符串types的预期资源”

我刚刚尝试为我的一个项目生成签名的apk(之前我已经做过),但是(也许自从更新Android Studio)我得到了 错误:错误:字符串[ResourceType]types的预期资源 这是因为我正在使用Butterknife的@BindString,它被生成类似的东西 target.settings = res.getString(2131230792); 如何让工作室不将此检测为错误? 我试过在设置中搜索,但没有成功。

黄油刀 – 无法为片段绑定视图

我得到一个exceptionjava.lang.RuntimeException:无法绑定ButterKnife.bind(this,view)片段的视图。 代码如下所示: @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View view = inflater.inflate(R.layout.fragment_personal, container, false); ButterKnife.bind(this, view); BindData(); return view; }

Butterknife 8.4.0 – 找不到id为'android-apt'的插件

我不断收到Plugin with id 'android-apt' not found的错误Plugin with id 'android-apt' not found 。 这里怎么了? plugins { id "me.tatarka.retrolambda" version "3.2.5" } apply plugin: 'com.android.application' apply plugin: 'android-apt' android { compileSdkVersion 24 buildToolsVersion '23.0.3' dexOptions { javaMaxHeapSize "6g" } defaultConfig { applicationId "com.yitter.android" minSdkVersion 15 targetSdkVersion 24 multiDexEnabled true // Enabling multidex support. renderscriptTargetApi 23 renderscriptSupportModeEnabled true […]

ButterKnife:ViewPager上片段重新创build后的空视图

我正在使用Butterknife(8.2.1)的最新版本,我遇到了一个问题:在使用带有3个碎片的ViewPager时,当碎片被重新创build时,所有视图都变为空! 前两个碎片,没问题,但是当我刷到第三个,回到第一个碎片时,每个视图变为空。 可能是什么问题呢? 我添加了ButterKnife.setDebug(true); 获得更多关于这个问题的信息,我得到这个: D/ButterKnife: Looking up view binder for com.example.overview.MeetupOverviewFragment D/ButterKnife: HIT: Cached in view binder map. D/ButterKnife: Looking up view binder for com.example.attendees.MeetupAttendeesFragment D/ButterKnife: HIT: Cached in view binder map. D/ButterKnife: Looking up view binder for com.example.attendees.ControllerListAttendees$ItemViewHolder D/ButterKnife: HIT: Cached in view binder map. D/ButterKnife: Looking up view binder for com.example.attendees.ControllerListAttendees$ItemViewHolder D/ButterKnife: […]