我正在开发一款应用程序,为学生提供学校的日程安排等。我正在尝试使用BottomNavigationView代替每个选项卡底部的独立按钮。我已经完成了大量的研究,以了解如何使用BottomNavigationView,并成功创建了几个测试应用程序。但是,到目前为止,我无法让BottomNavigationView在以前编写的代码中实现。视图本身显示,但OnNavigationItemSelectedListener代码未运行。注意:已经在应用程序中已经编写的代码量意味着在这个应用程序中使用BottomNavigationView的最佳方式(我认为)是在选择BottomNavigationView中的一个项目时切换到另一个java类,并且我目前拥有的四项活动中的每一项都有相同的BottomNavigationView。
MainActivity的onCreate:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
setRequestedOrientation (ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
findToday();
BottomNavigationView navigation = (BottomNavigationView) findViewById(R.id.bottomnavschedule);
navigation.bringToFront();
navigation.setOnNavigationItemSelectedListener(new BottomNavigationView.OnNavigationItemSelectedListener() {
@Override
public boolean onNavigationItemSelected(@NonNull MenuItem item) {
switch (item.getItemId()) {
case R.id.schedule_tab:
return true;
case R.id.barcode_tab:
startActivity(new Intent(getApplicationContext(), barcodeActivity.class));
return true;
case R.id.contacts_tab:
startActivity(new Intent(getApplicationContext(), friendActivity.class));
return true;
case R.id.other_tab:
startActivity(new Intent(getApplicationContext(), otherActivity.class));
return true;
}
return false;
}
});
new refreshSchedule().execute();
和activity_main中的XML:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
xmlns:app="http://schemas.android.com/apk/res-auto"
tools:context="com.fuady.ssa_app_redo1.MainActivity"
android:layout_height="wrap_content"
android:layout_width="match_parent"
android:background="@mipmap/appbg4">
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="530dp"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:layout_alignParentTop="true"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="com.fuady.ssa_app_redo1.MainActivity">
<Button
android:id="@+id/todayButton"
android:layout_width="100dp"
android:layout_height="50dp"
android:layout_above="@+id/dayScroller"
android:layout_centerInParent="true"
android:onClick="todayButtonFunction"
android:text="Today"
android:textSize="12dp" />
<Button
android:id="@+id/previousDayButton"
android:layout_width="100dp"
android:layout_height="50dp"
android:layout_above="@id/dayScroller"
android:layout_marginRight="20dp"
android:layout_toLeftOf="@+id/todayButton"
android:onClick="previousDay"
android:text="Previous Day"
android:textSize="12dp" />
<Button
android:id="@+id/nextDayButton"
android:layout_width="100dp"
android:layout_height="50dp"
android:layout_above="@id/dayScroller"
android:layout_marginLeft="20dp"
android:layout_toRightOf="@+id/todayButton"
android:onClick="nextDay"
android:text="Next Day"
android:textSize="12dp" />
<ListView
android:id="@+id/listView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_above="@+id/todayButton"
android:layout_alignParentEnd="true"
android:layout_alignParentRight="true"
android:layout_below="@+id/button19"
android:layout_marginTop="15dp" />
<TextView
android:id="@+id/textView"
android:layout_width="150dp"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:layout_alignParentTop="true"
android:layout_marginTop="2dp"
android:textColor="#ffffff"
android:textSize="16dp" />
<ImageView
android:id="@+id/button19"
android:layout_width="40dp"
android:layout_height="40dp"
android:layout_alignParentRight="true"
android:layout_alignParentTop="true"
android:layout_gravity="bottom|right"
android:layout_marginEnd="9dp"
android:layout_marginRight="9dp"
android:background="@android:color/transparent"
android:onClick="editSchedule"
android:src="@drawable/editicon" />
<SeekBar
android:id="@+id/dayScroller"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_alignParentLeft="true"
android:layout_centerHorizontal="true"
android:layout_marginBottom="2dp" />
</RelativeLayout>
<android.support.design.widget.BottomNavigationView
android:id="@+id/bottomnavschedule"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
app:itemIconTint="@color/colorPrimary"
app:menu="@menu/bottom_nav_resource" />
</RelativeLayout>
我的BottomNavigationView菜单文件(名为bottomnavresource):
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:id="@+id/schedule_tab"
android:title="Schedule"
android:icon="@drawable/shedules"
/>
<item
android:id="@+id/barcode_tab"
android:title="Barcode"
android:icon="@drawable/barcodeicon"
/>
<item
android:id="@+id/contacts_tab"
android:title="Contacts"
android:icon="@drawable/friend"
/>
<item
android:id="@+id/other_tab"
android:title="More"
android:icon="@drawable/other"
/>
</menu>
我还没有尝试将BottomNavigationView实现到任何其他标签中,因为它在此标签中不起作用。我还创建了另一个具有几乎相同的BottomNavigationView代码的程序(没有专门针对此应用程序的其他代码)作为测试,并且它工作得很好。我已经多次更改了很多东西,但是,当点击BottomNavigationView上的任何标签时,选项卡会被选中,但活动不会切换。
感谢您的帮助。