Android 在带有片段的多模块项目中使用ButterKnife时出现NullPointerException
我得到了Android 在带有片段的多模块项目中使用ButterKnife时出现NullPointerException,android,module,nullpointerexception,fragment,butterknife,Android,Module,Nullpointerexception,Fragment,Butterknife,我得到了java.lang.NullPointerException:当应用程序在后台运行几分钟后恢复时,尝试在空对象引用上调用虚拟方法'void android.view.view.setVisibility(int) 我的根构建脚本: dependencies { classpath 'com.android.tools.build:gradle:2.3.0' classpath 'net.researchgate:gradle-release:2.4.0' clas
java.lang.NullPointerException:当应用程序在后台运行几分钟后恢复时,尝试在空对象引用上调用虚拟方法'void android.view.view.setVisibility(int)
我的根构建脚本:
dependencies {
classpath 'com.android.tools.build:gradle:2.3.0'
classpath 'net.researchgate:gradle-release:2.4.0'
classpath 'com.jakewharton:butterknife-gradle-plugin:8.5.1'
}
我的库模块gradle有:
apply plugin: 'com.jakewharton.butterknife'
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
compile 'com.jakewharton:butterknife:8.5.1'
annotationProcessor 'com.jakewharton:butterknife-compiler:8.5.1'
testCompile 'junit:junit:4.12'
}
在我正在恢复的片段中,正确地绑定了视图,
但在恢复应用程序时,绑定不知何故丢失了
@BindView(R2.id.recyclerView) RecyclerView recyclerView;
@BindView(R2.id.viewPager) ViewPager viewPager;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
{
View view = inflater.inflate(getFragmentLayoutId(), container, false);
unbinder = ButterKnife.bind(this, view);
return view;
}
@Override
public void onDestroyView()
{
super.onDestroyView();
if (unbinder != null)
{
unbinder.unbind();
}
}
我没有使用proguard,在某些情况下,在viewPager中更改页面时也会引发异常。
viewPager和recyclerView有时都为空
异常在此处引发:
private ViewPager.OnPageChangeListener getOnPageChangeListener()
{
return new ViewPager.OnPageChangeListener()
{
public void onPageScrollStateChanged(int i) {}
public void onPageScrolled(int i, float v, int i1) {}
public void onPageSelected(int position)
{
if (position != list.size())
{
if (isSelectedActive())
{
animateSelectedToActive();
}
else
{
animateSelectedToInactive();
}
}
}
};
}
private void animateSelectedToActive()
{
// -- Exception thrown here ! --
recyclerView.setVisibility(View.VISIBLE);
recyclerView.animate().alpha(0f)
.setDuration(370)
.start();
}
我是否错过了一些东西,我遵循了如何逐行实现它?这可能是因为
片段
依赖于活动上下文
,而没有自己的上下文
。所以你必须做ButterKnife.bind(这个,视图)在活动
中的code>,它启动您的片段
。希望对您有所帮助:)您是否尝试使用默认的bindview aka R而不是库视图?在您的代码中,该异常在哪里引发?请注明行。我已用更多信息更新了问题,在其他地方也引发了异常,但此异常更为频繁。:)根据,巴特刀。绑定(此,视图);必须使用:/