【问题标题】:OnClickListener on NavigationView isn't workingNavigationView 上的 OnClickListener 不起作用
【发布时间】:2018-12-31 11:56:33
【问题描述】:

我是第一次使用 NavigationView,遇到了问题。

当我单击 NavigationView 中的项目时,它会转到开始位置而不显示 toast。

这是我的代码:

class MainActivity : AppCompatActivity(), NavigationView.OnNavigationItemSelectedListener {

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContentView(R.layout.activity_main)

    val navigationView = findViewById<NavigationView>(R.id.navigationView)
    navigationView.setNavigationItemSelectedListener(this)

    phoneBTT.setOnClickListener {
        Toast.makeText(this, "Phone BTT is clicked", Toast.LENGTH_LONG).show()
    }
}

override fun onNavigationItemSelected(item: MenuItem): Boolean {

    when(item.itemId)
    {
        R.id.galleryBTT -> {
            Toast.makeText(this, "Gallery BTT is clicked", Toast.LENGTH_LONG).show()
        }

        R.id.exitBTT -> {
            Toast.makeText(this, "Exit BTT is clicked", Toast.LENGTH_LONG).show()
        }

        R.id.alarmBTT -> {
            Toast.makeText(this, "Alarm BTT is clicked", Toast.LENGTH_LONG).show()
        }

        R.id.creditCardBTT -> {
            Toast.makeText(this, "CreditCard BTT is clicked", Toast.LENGTH_LONG).show()
        }
    }

    return true
}

【问题讨论】:

    标签: android kotlin navigationview


    【解决方案1】:

    像这样使用导航视图

    private void setupNavigationView() {
        BottomNavigationViewHelper.disableShiftMode(bottomNavigation);
    
        menu = bottomNavigation.getMenu();
        selectFragment(menu.getItem(0));
    
        bottomNavigation.setOnNavigationItemSelectedListener(
                item -> {
                    selectFragment(item);
                    return false;
                });
    }
    
    protected void selectFragment(MenuItem item) {
        item.setChecked(true);
        FragmentManager fm = getSupportFragmentManager();
        switch (item.getItemId()) {
            case R.id.galleryBTT:
                //Put your Code here
                break;
            case R.id.exitBTT:
                //Put your Code 
                break;
            case R.id.creditCardBTT :
               //Put your Code 
                break;
        }
    }
    

    【讨论】:

      【解决方案2】:

      这是我的 xml 文件:

      <?xml version="1.0" encoding="utf-8"?>
      <android.support.v4.widget.DrawerLayout
          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"
          android:layout_width="match_parent"
          android:layout_height="match_parent"
          tools:context=".MainActivity">
      
      
      
      <android.support.constraint.ConstraintLayout
              android:layout_width="match_parent"
              android:layout_height="match_parent">
      
      
      
      
          <Button
                  android:text="Button"
                  android:layout_width="wrap_content"
                  android:layout_height="wrap_content"
                  android:id="@+id/button" android:layout_marginTop="228dp"
                  app:layout_constraintTop_toTopOf="parent" app:layout_constraintStart_toStartOf="parent"
                  android:layout_marginStart="192dp"/>
      
          <android.support.v7.widget.Toolbar
                  android:layout_width="match_parent"
                  android:layout_height="wrap_content"
                  android:background="?attr/colorPrimary"
                  android:theme="?attr/actionBarTheme"
                  android:minHeight="?attr/actionBarSize" android:id="@+id/toolbar3"/>
      
      
          <Button
                  android:layout_width="36dp"
                  android:layout_height="46dp" android:id="@+id/phoneBTT"
                  app:layout_constraintEnd_toEndOf="@+id/toolbar3" app:layout_constraintStart_toStartOf="@+id/toolbar3"
                  android:layout_marginStart="8dp"
                  app:layout_constraintBottom_toBottomOf="@+id/toolbar3" android:layout_marginTop="8dp"
                  app:layout_constraintTop_toTopOf="@+id/toolbar3" app:layout_constraintHorizontal_bias="0.023"
                  app:layout_constraintVertical_bias="0.0"
                  android:background="@drawable/ic_phone_black_24dp"/>
      
      
      
      </android.support.constraint.ConstraintLayout>
      
      <android.support.design.widget.NavigationView
              android:layout_width="wrap_content"
              android:layout_height="match_parent"
              android:layout_gravity="start"
              app:menu="@menu/nav_menu" android:id="@+id/navigationView">
      
      </android.support.design.widget.NavigationView>
      

      以前的 NavigationView 位于此脚本的顶部(在 DrawerLayout 中)。 当我把它放到底部时,它开始工作了!

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多