如何从底层导航抽屉启动活动?

时间:2016-10-01 11:03:11

标签: android android-layout

我正在开发一个包含底部导航抽屉的应用程序,直到现在每件事情都运行良好但是当我添加点击监听器时,我正在执行的操作无效。

bottombar_tabs.xml

<?xml version="1.0" encoding="utf-8"?>
<tabs xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_height="wrap_content"
    android:layout_width="match_parent">

    <tab
        android:layout_height="50dp"
        android:id="@+id/tab_favorites"
        android:icon="@mipmap/ic_map_black_24dp"
        android:title="Land" />

    <tab
        android:layout_height="50dp"
        android:id="@+id/tab_nearby"
        android:icon="@mipmap/ic_directions"
        android:title="Vehicle" />

    <tab
        android:layout_height="50dp"
        android:id="@+id/tab_friends"
        android:icon="@mipmap/ic_inbox_black_24dp"
        android:title="Equipment" />

</tabs>

activity_main.xml中

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_marginTop="?attr/actionBarSize"
    android:layout_height="match_parent"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:orientation="vertical">


    <android.support.v7.widget.RecyclerView
        android:id="@+id/fishPriceList"
        android:layout_marginBottom="?attr/actionBarSize"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:paddingTop="10dp"
        android:layout_weight="1"/>

    <android.support.design.widget.FloatingActionButton

        android:id="@+id/fab"
        android:background="#003300"
        app:backgroundTint="@color/green"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:layout_alignParentRight="true"
        android:layout_marginBottom="70dp"
        android:layout_gravity="bottom|end"
        android:layout_marginRight="@dimen/fab_margin"
        android:src="@mipmap/ic_filter_list" />


    <com.roughike.bottombar.BottomBar
        android:id="@+id/bottomBar"
            android:layout_width="match_parent"
            android:layout_height="65dp"
            android:layout_alignParentBottom="true"
            app:bb_tabXmlResource="@layout/bottombar_tabs" />


</RelativeLayout>

在java类

public class MainActivity extends Activity {
    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        BottomBar bottomBar = (BottomBar) findViewById(R.id.bottomBar);
         bottomBar.setOnTabReselectListener(new OnTabReselectListener() {
            @Override
            public void onTabReSelected(@IdRes int tabId) {

       if (tabId == R.id.tab_nearby){
               Toast.makeText(getApplicationContext(),"Working",Toast.LENGTH_LONG).show();
           }

            }
        });
    }
}

2 个答案:

答案 0 :(得分:1)

我不同意接受的答案,我调试了代码并发现了问题:

tabId总是以一个等于1的损坏值到达。

显然问题已经是identified

enter image description here

解决方案:

1 - 删除您的bottombar_tabs.xml

2 - 为资源中的XML文件创建文件夹文件夹,在布局文件夹之外 enter image description here

3 - 创建一个新的bottombar_tabs.xml 没有 android:命名空间

<?xml version="1.0" encoding="utf-8"?>
<tabs>
    <tab
        layout_height="50dp"
       id="@+id/tab_favorites"
       icon="@android:drawable/ic_menu_save"
        title="Land" />

    <tab
        layout_height="50dp"
        id="@+id/tab_nearby"
        icon="@android:drawable/ic_menu_save"
        title="Vehicle" />

    <tab
        layout_height="50dp"
        id="@+id/tab_friends"
        icon="@android:drawable/ic_menu_save"
        title="Equipment" />
</tabs>

4 - 在您的activity_main.xml布局中使用新的XML

<com.roughike.bottombar.BottomBar
        android:id="@+id/bottomBar"
        android:layout_width="match_parent"
        android:layout_height="65dp"
        android:layout_alignParentBottom="true"
        app:bb_tabXmlResource="@xml/tabs_final" />

Voila,它完成了=)

答案 1 :(得分:-1)

试试这个

 bottomBar.setOnTabselectListener(new OnTabselectListener() {
        @Override
        public void onTabSelected(@IdRes int tabId) {
            Toast.makeText(this, "Hello How are you?", Toast.LENGTH_LONG).show();
        }
    });