我正在开发一个包含底部导航抽屉的应用程序,直到现在每件事情都运行良好但是当我添加点击监听器时,我正在执行的操作无效。
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();
}
}
});
}
}
答案 0 :(得分:1)
我不同意接受的答案,我调试了代码并发现了问题:
tabId总是以一个等于1的损坏值到达。
显然问题已经是identified
解决方案:
1 - 删除您的bottombar_tabs.xml
2 - 为资源中的XML文件创建文件夹文件夹,在布局文件夹之外
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();
}
});