bottomNavigationView = findViewById(R.id.navigation); returns空java
bottomNavigationView = findViewById(R.id.navigation); returns null java
我真的不知道为什么会这样。我是 android 开发的新手,如果这是一个非常笨的问题,我很抱歉。在使用“findViewById()”方法后,bottomNavigationView 基本上为空。我知道它是空的,因为我已经把它打印出来了。我搜索了其他帖子,得出的结论是它要么是方法序列,要么是 xml 文件。但我似乎找不到他们的任何问题。
2022-05-18 17:05:02.236 6836-6836/com.example.smartchatters W/e.smartchatter: Accessing hidden method Landroid/view/ViewGroup;->makeOptionalFitsSystemWindows()V (greylist, reflection, allowed)
2022-05-18 17:05:02.521 6836-6836/com.example.smartchatters I/System.out: bottomNavigationView ->null
2022-05-18 17:05:02.579 6836-6858/com.example.smartchatters D/HostConnection: HostConnection::get() New Host Connection established 0xf0751650, tid 6858
这是MainActivity.java中唯一的方法:
import androidx.appcompat.app.AppCompatActivity;
import com.google.android.material.bottomnavigation.BottomNavigationView;
import android.os.Bundle;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
BottomNavigationView bottomNavigationView = findViewById(R.id.navigation);
System.out.println("bottomNavigationView ->"+bottomNavigationView);
}
}
navigation.xml 文件:
<?xml version="1.0" encoding="utf-8"?>
<navigation xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/navigation"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
app:startDestination="@id/mainFragment"
>
<fragment
android:id="@+id/mainFragment"
android:name="com.example.smartchatters.MainFragment"
android:label="fragment_main"
tools:layout="@layout/fragment_main" />
<fragment
android:id="@+id/contactsFragment"
android:name="com.example.smartchatters.ContactsFragment"
android:label="fragment_contacts"
tools:layout="@layout/fragment_contacts" />
</navigation>
和gradle.build:
plugins {
id 'com.android.application'
}
android {
compileSdk 32
defaultConfig {
applicationId "com.example.smartchatters"
minSdk 21
targetSdk 32
versionCode 1
versionName "1.0"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
}
}
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
}
dependencies {
implementation 'androidx.appcompat:appcompat:1.4.1'
implementation 'com.google.android.material:material:1.6.0'
implementation 'androidx.constraintlayout:constraintlayout:2.1.3'
implementation 'androidx.navigation:navigation-fragment:2.4.2'
implementation 'androidx.navigation:navigation-ui:2.4.2'
implementation 'androidx.legacy:legacy-support-v4:1.0.0'
testImplementation 'junit:junit:4.13.2'
androidTestImplementation 'androidx.test.ext:junit:1.1.3'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.4.0'
}
您正在设置布局 activity_main.xml
setContentView(R.layout.activity_main);
然后方法
findViewById
将在 activity_main.xml 文件中搜索视图 ID。
因此您需要使用 activity_main.xml
中的视图 ID(用于 BottomNavigationView
)
如果您在 activity_main.xml 中没有 ID 为“navigation”的视图,该方法将 return null
.
我真的不知道为什么会这样。我是 android 开发的新手,如果这是一个非常笨的问题,我很抱歉。在使用“findViewById()”方法后,bottomNavigationView 基本上为空。我知道它是空的,因为我已经把它打印出来了。我搜索了其他帖子,得出的结论是它要么是方法序列,要么是 xml 文件。但我似乎找不到他们的任何问题。
2022-05-18 17:05:02.236 6836-6836/com.example.smartchatters W/e.smartchatter: Accessing hidden method Landroid/view/ViewGroup;->makeOptionalFitsSystemWindows()V (greylist, reflection, allowed)
2022-05-18 17:05:02.521 6836-6836/com.example.smartchatters I/System.out: bottomNavigationView ->null
2022-05-18 17:05:02.579 6836-6858/com.example.smartchatters D/HostConnection: HostConnection::get() New Host Connection established 0xf0751650, tid 6858
这是MainActivity.java中唯一的方法:
import androidx.appcompat.app.AppCompatActivity;
import com.google.android.material.bottomnavigation.BottomNavigationView;
import android.os.Bundle;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
BottomNavigationView bottomNavigationView = findViewById(R.id.navigation);
System.out.println("bottomNavigationView ->"+bottomNavigationView);
}
}
navigation.xml 文件:
<?xml version="1.0" encoding="utf-8"?>
<navigation xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/navigation"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
app:startDestination="@id/mainFragment"
>
<fragment
android:id="@+id/mainFragment"
android:name="com.example.smartchatters.MainFragment"
android:label="fragment_main"
tools:layout="@layout/fragment_main" />
<fragment
android:id="@+id/contactsFragment"
android:name="com.example.smartchatters.ContactsFragment"
android:label="fragment_contacts"
tools:layout="@layout/fragment_contacts" />
</navigation>
和gradle.build:
plugins {
id 'com.android.application'
}
android {
compileSdk 32
defaultConfig {
applicationId "com.example.smartchatters"
minSdk 21
targetSdk 32
versionCode 1
versionName "1.0"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
}
}
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
}
dependencies {
implementation 'androidx.appcompat:appcompat:1.4.1'
implementation 'com.google.android.material:material:1.6.0'
implementation 'androidx.constraintlayout:constraintlayout:2.1.3'
implementation 'androidx.navigation:navigation-fragment:2.4.2'
implementation 'androidx.navigation:navigation-ui:2.4.2'
implementation 'androidx.legacy:legacy-support-v4:1.0.0'
testImplementation 'junit:junit:4.13.2'
androidTestImplementation 'androidx.test.ext:junit:1.1.3'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.4.0'
}
您正在设置布局 activity_main.xml
setContentView(R.layout.activity_main);
然后方法
findViewById
将在 activity_main.xml 文件中搜索视图 ID。
因此您需要使用 activity_main.xml
中的视图 ID(用于BottomNavigationView
)
如果您在 activity_main.xml 中没有 ID 为“navigation”的视图,该方法将 return null
.