简体   繁体   English

单击导航抽屉关闭自身 Android studio

[英]Clicking on navigation drawer close itself Android studio

I have implemented navigation drawer on my mobile application and whenever i open the drawer and click on the drawer, the drawer closes itself.我已经在我的移动应用程序上实现了导航抽屉,每当我打开抽屉并点击抽屉时,抽屉就会自动关闭。 It used to work perfectly until I implemented another function and I am puzzled about how I should fix this.它曾经完美地工作,直到我实现了另一个功能,我对如何解决这个问题感到困惑。 Here's my main activity code.这是我的主要活动代码。 I am unable to navigate using the navigation drawer now.我现在无法使用导航抽屉导航。

 package com.example.admin.calendlist; import android.content.DialogInterface; import android.content.Intent; import android.graphics.PorterDuff; import android.graphics.drawable.Drawable; import android.support.annotation.NonNull; import android.support.design.widget.NavigationView; import android.support.v4.view.GravityCompat; import android.support.v4.widget.DrawerLayout; import android.support.v7.app.ActionBarDrawerToggle; import android.support.v7.app.AlertDialog; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.Menu; import android.view.MenuItem; import android.view.View; import android.widget.ArrayAdapter; import android.widget.EditText; import android.widget.ListView; import android.widget.TextView; import java.util.ArrayList; public class MainActivity extends AppCompatActivity { private DrawerLayout mDrawerLayout; private ActionBarDrawerToggle mToggle; DatabaseHelper dbHelper; ArrayAdapter<String> mAdapter; ListView lstTask; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); mDrawerLayout = (DrawerLayout)findViewById(R.id.drawer); mToggle = new ActionBarDrawerToggle(this,mDrawerLayout, R.string.open,R.string.close); mDrawerLayout.addDrawerListener(mToggle); mToggle.syncState(); dbHelper = new DatabaseHelper(this); lstTask = (ListView)findViewById(R.id.lstTask); getSupportActionBar().setDisplayHomeAsUpEnabled(true); NavigationView nvDrawer = (NavigationView)findViewById(R.id.nav_view); setupDrawerContent(nvDrawer); loadTaskList(); } private void loadTaskList() { ArrayList<String> taskList = dbHelper.getTaskList(); if(mAdapter==null){ mAdapter = new ArrayAdapter<String>(this, R.layout.row,R.id.task_title,taskList); lstTask.setAdapter(mAdapter); } else{ mAdapter.clear(); mAdapter.addAll(taskList); mAdapter.notifyDataSetChanged(); } } @Override public boolean onOptionsItemSelected(MenuItem item) { if (mToggle.onOptionsItemSelected(item)){ return true; } { switch (item.getItemId()) { case R.id.action_add_task: final EditText taskEditText = new EditText(this); AlertDialog dialog = new AlertDialog.Builder(this) .setTitle("Add New Task") .setMessage("What do you want to do next?") .setView(taskEditText) .setPositiveButton("Add", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { String task = String.valueOf(taskEditText.getText()); dbHelper.insertNewTask(task); loadTaskList(); } }) .setNegativeButton("Cancel", null) .create(); dialog.show(); } switch (item.getItemId()) { case R.id.td: Intent newIntent = new Intent(this,MainActivity.class); return true; } switch (item.getItemId()) { case R.id.tt: Intent newIntent = new Intent(this,Timetable.class); return true; } switch (item.getItemId()) { case R.id.ep: Intent newIntent = new Intent(this,EventPage.class); return true; } } return super.onOptionsItemSelected(item); } private void selectItemDrawer(MenuItem item) { int id = item.getItemId(); if (id ==R.id.ep) { Intent newItent = new Intent (this, EventPage.class); startActivity(newItent); } else if (id == R.id.td) { Intent newIntent = new Intent (this,MainActivity.class); startActivity(newIntent); } else if (id == R.id.tt) { Intent newIntent = new Intent (this,Timetable.class); startActivity(newIntent); } DrawerLayout drawer = findViewById(R.id.drawer); drawer.closeDrawer(GravityCompat.START); } private void setupDrawerContent (NavigationView navigationView) { navigationView.setNavigationItemSelectedListener (new NavigationView.OnNavigationItemSelectedListener() { @Override public boolean onNavigationItemSelected(@NonNull MenuItem item) { selectItemDrawer(item); return true; } }); } @Override public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.listmenu,menu); Drawable icon =menu.getItem(0).getIcon(); icon.mutate(); icon.setColorFilter(getResources().getColor(android.R.color.black), PorterDuff.Mode.SRC_IN); return super.onCreateOptionsMenu(menu); } public void deleteTask(View view){ View parent = (View)view.getParent(); TextView taskTextView = (TextView)findViewById(R.id.task_title); String task = String.valueOf(taskTextView.getText()); dbHelper.deleteTask(task); loadTaskList(); } }

If you don't want navigation to close with each click, write like this :如果您不希望每次点击都关闭导航,请这样写:

NavigationView navigationView = findViewById(R.id.navigationView);
navigationView.bringToFront();
    you can use it after switch

    switch(id){

    }
//Set menuItem checked and title
     menuItem.setChecked(true);
  // close drawer when item is tapped
     mDrawerLayout.closeDrawers();

return false;

its obvious in Default drawerlayout on your click it has to be close,if you wana get command on your drawerlayot , hen you have to use custom drawerlayout, or you can add the library, don't forget to import the library manually not in your gradle, then you can edit the library, and chose the functions .它在您单击的默认抽屉布局中很明显它必须关闭,如果您想在抽屉上获取命令,则必须使用自定义抽屉布局,或者您可以添加库,不要忘记手动导入库而不是在您的gradle,然后您可以编辑库,并选择功能。 try this Library试试这个图书馆

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM