package cn.edu.nhic.wyyx2.ui.activity;
import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.design.widget.BottomNavigationView;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentTransaction;
import android.support.v7.app.AppCompatActivity;
import android.view.MenuItem;
import cn.edu.nhic.wyyx2.R;
import cn.edu.nhic.wyyx2.base.BaseFragment;
import cn.edu.nhic.wyyx2.ui.fragment.CarFragment;
import cn.edu.nhic.wyyx2.ui.fragment.DeserveFragment;
import cn.edu.nhic.wyyx2.ui.fragment.HomeFragment;
import cn.edu.nhic.wyyx2.ui.fragment.MineFragment;
import cn.edu.nhic.wyyx2.ui.fragment.SortFragment;
import cn.edu.nhic.wyyx2.utils.LogUtils;
public class MainActivity extends AppCompatActivity {
public BottomNavigationView mBottomNavigationView;
//public static final String TAG ="MainActivity" ;
private HomeFragment mHomeFragment;
private SortFragment mSortFragment;
private MineFragment mMineFragment;
private CarFragment mCarFragment;
private DeserveFragment mDeserveFragment;
private FragmentManager mSupportFragmentManager;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//initView();
//ButterKnife.bind(this);
initFragments();
initListener();
}
private void initFragments() {
mHomeFragment = new HomeFragment();
mSortFragment = new SortFragment();
mDeserveFragment = new DeserveFragment();
mCarFragment = new CarFragment();
mMineFragment = new MineFragment();
mSupportFragmentManager = getSupportFragmentManager();
switchFragment (mHomeFragment);
}
private void initListener() {
mBottomNavigationView.setOnNavigationItemSelectedListener(new BottomNavigationView.OnNavigationItemSelectedListener() {
@Override
public boolean onNavigationItemSelected(@NonNull MenuItem item) {
//Log.d(TAG,"TITLE"+item.getTitle()+"id"+item.getItemId());
//log等级控制
if(item.getItemId()==R.id.home){
LogUtils.d(MainActivity.class,"切换到首页");
switchFragment (mHomeFragment);
}else if(item.getItemId()==R.id.shfl){
LogUtils.i(MainActivity.class,"切换到商品分类");
switchFragment (mSortFragment);
}else if(item.getItemId()==R.id.deserve){
LogUtils.w(MainActivity.class,"切换到值得买");
switchFragment (mDeserveFragment);
}else if(item.getItemId()==R.id.car){
LogUtils.e(MainActivity.class,"切换到购物车");
switchFragment (mCarFragment);
}else if(item.getItemId()==R.id.mine){
LogUtils.v(MainActivity.class,"切换到我的");
switchFragment (mMineFragment);
}
return true;
}
});
}
private void switchFragment(BaseFragment targetFragment) {
FragmentTransaction fragmentTransaction=mSupportFragmentManager.beginTransaction();
fragmentTransaction.replace(R.id.main_page_container,targetFragment);
fragmentTransaction.commit();//要习惯性的提交事务
}
/*
private void initView() {
mBottomNavigationView = (BottomNavigationView) this.findViewById(R.id.main_navigation_bar);
HomeFragment homeFragment=new HomeFragment();
//依次把fragment添加进去
FragmentManager fm=getSupportFragmentManager();
FragmentTransaction transaction=fm.beginTransaction();
transaction.add(R.id.main_page_container,homeFragment);
transaction.commit();
}
*/
}
04-24 00:42:11.585 5841-5841/? I/art: Not late-enabling -Xcheck:jni (already on)
04-24 00:42:11.586 5841-5841/? W/art: Unexpected CPU variant for X86 using defaults: x86
04-24 00:42:11.630 5841-5848/? E/art: Failed sending reply to debugger: Broken pipe
04-24 00:42:11.630 5841-5848/? I/art: Debugger is no longer active
04-24 00:42:11.631 5841-5848/? I/art: Starting a blocking GC Instrumentation
04-24 00:42:11.959 5841-5841/? W/System: ClassLoader referenced unknown path: /data/app/cn.edu.nhic.wyyx2-2/lib/x86
04-24 00:42:11.972 5841-5841/? I/InstantRun: starting instant run server: is main process
04-24 00:42:12.408 5841-5841/? W/art: Before Android 4.1, method android.graphics.PorterDuffColorFilter android.support.graphics.drawable.VectorDrawableCompat.updateTintFilter(android.graphics.PorterDuffColorFilter, android.content.res.ColorStateList, android.graphics.PorterDuff$Mode) would have incorrectly overridden the package-private method in android.graphics.drawable.Drawable
04-24 00:42:13.112 5841-5841/cn.edu.nhic.wyyx2 D/AndroidRuntime: Shutting down VM
--------- beginning of crash
04-24 00:42:13.112 5841-5841/cn.edu.nhic.wyyx2 E/AndroidRuntime: FATAL EXCEPTION: main
Process: cn.edu.nhic.wyyx2, PID: 5841
java.lang.RuntimeException: Unable to start activity ComponentInfo{cn.edu.nhic.wyyx2/cn.edu.nhic.wyyx2.ui.activity.MainActivity}: 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:2665)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2726)
at android.app.ActivityThread.-wrap12(ActivityThread.java)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1477)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:154)
at android.app.ActivityThread.main(ActivityThread.java:6119)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:886)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:776)
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 cn.edu.nhic.wyyx2.ui.activity.MainActivity.initListener(MainActivity.java:51)
at cn.edu.nhic.wyyx2.ui.activity.MainActivity.onCreate(MainActivity.java:38)
at android.app.Activity.performCreate(Activity.java:6679)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1118)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2618)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2726)
at android.app.ActivityThread.-wrap12(ActivityThread.java)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1477)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:154)
at android.app.ActivityThread.main(ActivityThread.java:6119)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:886)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:776)
04-24 00:42:22.261 5841-5848/cn.edu.nhic.wyyx2 W/art: Suspending all threads took: 7.128ms
04-24 00:42:22.760 5841-5848/cn.edu.nhic.wyyx2 W/art: Suspending all threads took: 5.577ms
已解决,空时针问题
你不是注释掉了找到BottomNavigationView控件的方法嘛,BottomNavigationView对象肯定就是一个null了呀,你给他设置监听不就是空指针异常了么。 解决后记得给 最佳答案 哦