我正在使用ViewPager制作图片滑块,它在API 22上完美运行,但当我在API 26上运行相同的代码时,findViewById
会返回null
。
我的gradle app config:
android {
compileSdkVersion 27
defaultConfig {
minSdkVersion 21
targetSdkVersion 27
versionCode 1
versionName "1.0"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
buildToolsVersion '27.0.3'
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}}
我使用支持库版本27.1.1
。
为什么ViewPager没有在API 26初始化? :(
public class DetailActivity extends AppCompatActivity {
ViewPager imagePager;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_detail);
imagePager = findViewById(R.id.forklift_view_pager);
configureToolbar();
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
// Respond to the action bar's Up/Home button
case android.R.id.home:
NavUtils.navigateUpFromSameTask(this);
return true;
}
return super.onOptionsItemSelected(item);
}
private void configureToolbar() {
Toolbar toolbar = findViewById(R.id.detail_activity_toolbar);
if (toolbar != null) {
toolbar.setLogo(R.drawable.ic_forklift_logo_transp_white_toolbar_size);
Drawable backArrow = toolbar.getNavigationIcon();
if (backArrow != null) {
backArrow.setColorFilter(getResources().getColor(R.color.white), PorterDuff.Mode.SRC_ATOP);
}
}
setSupportActionBar(toolbar);
android.support.v7.app.ActionBar actionBar = getSupportActionBar();
if (actionBar != null) {
actionBar.setHomeButtonEnabled(true);
actionBar.setDisplayHomeAsUpEnabled(true);
actionBar.setDisplayShowTitleEnabled(false);
}
}
XML:
<?xml version="1.0" encoding="utf-8"?>
<ScrollView
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"
android:layout_width="match_parent"
android:layout_height="match_parent">
<android.support.constraint.ConstraintLayout
android:id="@+id/detail_layout_container"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingBottom="16dp">
<android.support.v4.view.ViewPager
android:id="@+id/forklift_view_pager"
android:layout_width="match_parent"
android:layout_height="250dp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/view2" />
答案 0 :(得分:0)
好的,我明白了。我只是没有注意,我有两个布局文件(一个用于v26 - 我不记得它是如何创建的)用于相同的活动。因此,我只更新了其中一个XML文件中的id
值。