Java 安卓工作室;BottomNavigationView=null
我不知道为什么Java 安卓工作室;BottomNavigationView=null,java,android,android-studio,bottomnavigationview,Java,Android,Android Studio,Bottomnavigationview,我不知道为什么BottomNavigationViewnull。我正在使用Firebase API,并添加了一些代码来向JSON文件添加数据。在我做了这些之后,我的一项活动就停止了。这甚至不是我正在做的活动。我的导航等于null,我检查了XML文件。名称相同,调试也没有帮助,因为它向我显示了一行设置BottomNavigationView并给我一个空指针的代码 这是导致此问题的导航: private BottomNavigationView.OnNavigationItemSelectedLis
BottomNavigationView
null。我正在使用Firebase API,并添加了一些代码来向JSON文件添加数据。在我做了这些之后,我的一项活动就停止了。这甚至不是我正在做的活动。我的导航等于null,我检查了XML文件。名称相同,调试也没有帮助,因为它向我显示了一行设置BottomNavigationView
并给我一个空指针的代码
这是导致此问题的导航:
private BottomNavigationView.OnNavigationItemSelectedListener mOnNavigationItemSelectedListener
= new BottomNavigationView.OnNavigationItemSelectedListener()
{
@Override
public boolean onNavigationItemSelected(@NonNull MenuItem item) {
switch (item.getItemId()) {
case R.id.navigation_to_dos:
return true;
case R.id.navigation_categories:
intent = new Intent(ToDos.this, Categories.class);
intent.setFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION | Intent.FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS);
startActivity(intent);
return true;
case R.id.navigation_account:
intent = new Intent(ToDos.this, Account.class);
intent.setFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION | Intent.FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS);
startActivity(intent);
return true;
}
return false;
}
};
这是我初始化onCreate()函数中与Navigaion有关的所有内容的部分:
BottomNavigationView navigation = (BottomNavigationView) findViewById(R.id.navigation);
navigation.setOnNavigationItemSelectedListener(mOnNavigationItemSelectedListener);
navigation.setSelectedItemId(R.id.navigation_to_dos);
我得到这个错误:
E/AndroidRuntime: FATAL EXCEPTION: main
Process: lb335.bbbaden.ch.pendenzenverwaltung, PID: 25288
java.lang.RuntimeException: Unable to start activity ComponentInfo{lb335.bbbaden.ch.pendenzenverwaltung/lb335.bbbaden.ch.pendenzenverwaltung.ToDos}: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.support.design.widget.BottomNavigationView.setOnNavigationItemSelectedListener(android.support.design.widget.BottomNavigationView$OnNavigationItemSelectedListener)' on a null object reference
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3184)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3279)
at android.app.ActivityThread.-wrap12(Unknown Source:0)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1881)
at android.os.Handler.dispatchMessage(Handler.java:108)
at android.os.Looper.loop(Looper.java:166)
at android.app.ActivityThread.main(ActivityThread.java:7406)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:245)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:926)
Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.support.design.widget.BottomNavigationView.setOnNavigationItemSelectedListener(android.support.design.widget.BottomNavigationView$OnNavigationItemSelectedListener)' on a null object reference
at lb335.bbbaden.ch.pendenzenverwaltung.ToDos.onCreate(ToDos.java:76)
at android.app.Activity.performCreate(Activity.java:7365)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1218)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3137)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3279)
at android.app.ActivityThread.-wrap12(Unknown Source:0)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1881)
at android.os.Handler.dispatchMessage(Handler.java:108)
at android.os.Looper.loop(Looper.java:166)
at android.app.ActivityThread.main(ActivityThread.java:7406)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:245)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:926)
我的活动XML:
<android.support.design.widget.BottomNavigationView
android:id="@+id/navigation"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:background="?android:attr/windowBackground"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:menu="@menu/navigation" />
我对这一点很迷茫,非常感谢更有经验的程序员的帮助
编辑:
多亏了snachmsm,我发现我的函数顺序都搞乱了。在实际设置内容之前,我执行了
findViewById()
。我不得不关掉它,现在它工作了。你的导航返回false
,因为你把它设置为false
请在导航结束时检查并将返回类型从return false更改为
to返回true代码>
private BottomNavigationView.OnNavigationItemSelectedListener mOnNavigationItemSelectedListener
= new BottomNavigationView.OnNavigationItemSelectedListener()
{
@Override
public boolean onNavigationItemSelected(@NonNull MenuItem item) {
switch (item.getItemId()) {
case R.id.navigation_to_dos:
return true;
case R.id.navigation_categories:
intent = new Intent(ToDos.this, Categories.class);
intent.setFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION | Intent.FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS);
startActivity(intent);
return true;
case R.id.navigation_account:
intent = new Intent(ToDos.this, Account.class);
intent.setFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION | Intent.FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS);
startActivity(intent);
return true;
}
return false; // Here is the problem. Change it from false to true
}};
另外,BottomNavigationView-navigation=(BottomNavigationView)findViewById(R.id.navigation)代码>
原因:java.lang.NullPointerException:尝试调用空对象引用上的虚拟方法“void android.support.design.widget.BottomNavigationView.setOnNavigationItemSelectedListener(android.support.design.widget.BottomNavigationView$OnNavigationItemSelectedListener)”
您的BottomNavigationView
为null
,这是事实。此行没有获取您的视图
:
BottomNavigationView navigation = (BottomNavigationView) findViewById(R.id.navigation);
您的BottomNavigationView
是否属于充气布局R.id.navigation
是否为BottomNavigationView
正确设置?显示onCreate
方法中的一些XML和更多代码。也许秩序不好?(例如,在setContentView
之前调用findViewById
)
编辑:好的,id
为视图
在XML内部正确设置,但是您只发布了一小部分,还展示了如何在活动
中膨胀此XML在我的案例中我也遇到了这个问题,我通过在
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_seller_home);//here was problem,i was inflating wrong home activity
问题是我的BottomNavigationView变量等于null:/I添加了错误消息。当我尝试将我的BottomNavigationView变量设置为findViewById(R.id.navigation)时,onCreate()函数中会弹出它。我尝试将returnvalue设置为true,但遗憾的是它没有更改outcomenavigation.setOnNavigationItemSelectedListener(此);事实上,你是对的。我搞乱了顺序,我的findViewById写在setContentView之前。谢谢。它又起作用了。