Java 活动中缺少导航抽屉汉堡图标
我用片段和活动构建了一个导航抽屉。所有的片段都有图标,抽屉的访问非常顺畅,但活动中没有任何内容。该活动是默认的“主页”,因此访问导航抽屉至关重要。通常不调用Java 活动中缺少导航抽屉汉堡图标,java,android,Java,Android,我用片段和活动构建了一个导航抽屉。所有的片段都有图标,抽屉的访问非常顺畅,但活动中没有任何内容。该活动是默认的“主页”,因此访问导航抽屉至关重要。通常不调用toggle.syncState()是解决方案,但在这种情况下失败 主要活动: public class MainActivity extends AppCompatActivity implements NavigationView.OnNavigationItemSelectedListener { @Override prot
toggle.syncState()
是解决方案,但在这种情况下失败
主要活动:
public class MainActivity extends AppCompatActivity
implements NavigationView.OnNavigationItemSelectedListener {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Toolbar toolbar = findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
DrawerLayout drawer = findViewById(R.id.drawer_layout);
ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(
this, drawer, toolbar, R.string.navigation_drawer_open, R.string.navigation_drawer_close);
drawer.addDrawerListener(toggle);
toggle.setDrawerIndicatorEnabled(true);
toggle.syncState();
NavigationView navigationView = findViewById(R.id.nav_view);
navigationView.setNavigationItemSelectedListener(this);
//Sets default fragment
Intent i = new Intent(MainActivity.this,GarageActivity.class);
startActivity(i);
navigationView.setCheckedItem(R.id.nav_garage);
}
//Name in Action bar
public void setActionBarTitle(String title) {
getSupportActionBar().setTitle(title);
}
@Override
public void onBackPressed() {
DrawerLayout drawer = findViewById(R.id.drawer_layout);
if (drawer.isDrawerOpen(GravityCompat.START)) {
drawer.closeDrawer(GravityCompat.START);
} else {
super.onBackPressed();
}
}
有关活动:
public class GarageActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_garage);
getSupportActionBar().setTitle("My Garage");
}
}
舱单:
<?xml version="1.0" encoding="utf-8"?>
首先,您需要启用actionbar的主页按钮。然后将汉堡包图标指定给Home按钮,并编写代码在其侦听器中打开抽屉。以下是步骤:
ActionBar actionbar = getSupportActionBar();
actionbar.setDisplayHomeAsUpEnabled(true);
actionbar.setHomeAsUpIndicator(R.drawable.ic_menu);
public class MainActivity extends AppCompatActivity {
private DrawerLayout mDrawerLayout;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mDrawerLayout = findViewById(R.id.drawer_layout);
...
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case android.R.id.home:
mDrawerLayout.openDrawer(GravityCompat.START);
return true;
}
return super.onOptionsItemSelected(item);
}
}
source尝试在此活动生命周期方法中调用
toggle.syncState
@Override protected void onPostCreate(@Nullable Bundle savedInstanceState){super.onPostCreate(savedInstanceState);mToggle.syncState();}
public class MainActivity extends AppCompatActivity {
private DrawerLayout mDrawerLayout;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mDrawerLayout = findViewById(R.id.drawer_layout);
...
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case android.R.id.home:
mDrawerLayout.openDrawer(GravityCompat.START);
return true;
}
return super.onOptionsItemSelected(item);
}
}