Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >为什么这个导航抽屉不打开?

为什么这个导航抽屉不打开?
EN

Stack Overflow用户
提问于 2014-02-22 03:41:33
回答 1查看 1.7K关注 0票数 0

我试图制作一个导航抽屉,我正在阅读很多关于如何实现这个操作的指南,我认为它现在应该能工作,但是当我点击标题时,这个抽屉没有打开(当我手动打开它时,图标就会变小,但仍然没有菜单出现)。而且,我没有得到任何错误或例外,所以我想我可能错过了一些我自己也搞不懂的东西。这是我的BaseActivity (由MainActivity扩展的抽屉活动)的代码:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import android.os.Bundle;
import android.app.Activity;
import android.content.res.Configuration;
import android.support.v4.app.ActionBarDrawerToggle;
import android.support.v4.widget.DrawerLayout;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.Toast;

public class BaseActivity extends Activity {
    public DrawerLayout drawerLayout;
    public ListView drawerList;
    private String[] drawerListEntries;
    private ActionBarDrawerToggle drawerToggle;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_base);

        drawerListEntries = getResources().getStringArray(R.array.drawer_items);
        drawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout);

        drawerToggle = new ActionBarDrawerToggle(this, drawerLayout, R.drawable.ic_navigation_drawer, R.string.drawer_open, R.string.drawer_close) 
        {
            public void onDrawerClosed(View view) 
            {
                getActionBar().setTitle(R.string.app_name);
            }

            public void onDrawerOpened(View drawerView) 
            {
                getActionBar().setTitle(R.string.hello_world);
            }
        };
        drawerLayout.setDrawerListener(drawerToggle);


        getActionBar().setDisplayHomeAsUpEnabled(true);
        getActionBar().setHomeButtonEnabled(true);

        drawerList = (ListView) findViewById(R.id.drawer_list);
        drawerList.setAdapter(new ArrayAdapter<String>(getBaseContext(), R.layout.drawer_list_item, drawerListEntries));



        drawerList.setOnItemClickListener(new OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> arg0, View view, int pos, long arg3) {
                String selectedValue = (String) drawerList.getAdapter().getItem(pos);
                Toast.makeText(getBaseContext(), selectedValue, Toast.LENGTH_SHORT).show();
            }
        });
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {

        if (drawerToggle.onOptionsItemSelected(item)) {
            return true;
        }
        return super.onOptionsItemSelected(item);

    }

    @Override
    protected void onPostCreate(Bundle savedInstanceState) {
        super.onPostCreate(savedInstanceState);
        drawerToggle.syncState();
    }

    @Override
    public void onConfigurationChanged(Configuration newConfig) {
        super.onConfigurationChanged(newConfig);
        drawerToggle.onConfigurationChanged(newConfig);
    }

    @Override
    public boolean onPrepareOptionsMenu(Menu menu) {
       boolean drawerOpen = drawerLayout.isDrawerOpen(drawerList);
        menu.findItem(R.id.action_user).setVisible(!drawerOpen);
        return super.onPrepareOptionsMenu(menu);
    }
}

这是我的activity_base.xml

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<android.support.v4.widget.DrawerLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/drawer_layout"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <FrameLayout
        android:id="@+id/content_frame"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />


    <ListView
        android:id="@+id/drawer_list"
        android:layout_width="240dp"
        android:layout_height="wrap_content"
        android:background="@color/light_blue"
        android:divider="@android:color/transparent"
        android:dividerHeight="0dp"
        android:choiceMode="singleChoice"
        android:layout_gravity="start"
        />


</android.support.v4.widget.DrawerLayout>

这是我的drawer_list_item.xml

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >

    <TextView
        android:id="@+id/drawer_list_text"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginLeft="5dp"
        android:layout_marginTop="12dp" 
        android:textSize="24sp" 
        android:textColor="@color/belize_hole"
        android:fontFamily="sans-serif-light">
    </TextView>



</LinearLayout>

这是我的MainActivity.java,它扩展了BaseActivity

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;


public class HomeActivity extends BaseActivity {



    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_home);
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {

        getMenuInflater().inflate(R.menu.home, menu);
        //return super.onCreateOptionsMenu(menu);
        return true;
    }


}

有谁能看到问题吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-02-22 04:01:41

您正在通过在BaseActivity中调用setContentView(R.layout.activity_home);来覆盖HomeActivity的内容视图。

我建议您切换片段,而不是使用导航抽屉进行活动,这是最好的方法。因此,您将使用导航抽屉进行一个托管活动,例如,您将只在FrameLayout中切换视图。看看这里,http://developer.android.com/training/implementing-navigation/nav-drawer.html

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21953796

复制
相关文章
交互设计实战!TAB导航与侧边抽屉导航的巅峰对决
编者按:本文作者Anthony Rose,是社交网络电台Zeebox的联合创始人及CTO,文章不仅分析了侧边栏导航和Tab导航的利弊,还有改版过程进行A/B test 的详尽过程,且最后也给了建议,读完能对这两种导航有清晰的认识,非常有价值的经验分享 。 设想你需要设计一个含有许多页面和模块,不能在一屏内显示完全的应用。你一定会首先想到去设计一个底部或顶部的Tab导航。等一下,多出来的一排导航看上去有点碍眼?我们尝试下把他们收到侧边栏里,或者叫安卓团队给它的名字“侧边抽屉导航”。 如果你们的应用的也是多
BestSDK
2018/02/26
2.8K0
交互设计实战!TAB导航与侧边抽屉导航的巅峰对决
Android开发(37) 使用DrawerLayout实现抽屉式导航菜单
最近流行 左侧抽屉式的导航条菜单,知乎,360,QQ都使用了这样的导航菜单,我们也了解下:
张云飞Vir
2020/03/16
3.6K0
月收入过万了吗?如果没有,这个小程序我不建议你打开
每天在 888 平米的总统套房醒来,乘坐私人飞机带上宠物狗到海岛参加私人 party,心血来潮再买一个欧洲酒庄。
知晓君
2018/07/26
4850
如何新窗口打开导航链接?
像没有服务器,没弄多个Github账号的人,比如我(资深白嫖党),可能会遇到这个问题。
唐志远
2023/08/01
2600
如何新窗口打开导航链接?
基础篇章:关于 React Native 之 DrawerLayoutAndroid 组件的讲解
看名字我们就知道这个组件仅限 Android 平台能用。Android 中的 DrawerLayout 就是一个抽屉导航组件,所以这个组件的功能当然也是一样的。 DrawerLayoutAndroid 是通过 renderNavigationView 方法渲染的,并且它的直接子视图是放置内容的主视图。我们的这个抽屉导航视图一开始是看不见的,就像抽屉一样,你不拉开抽屉你看不到东西,所以导航视图可以从drawerPosition指定的窗口侧面拖拽出来,并且抽屉的宽度可以使用drawerWidth属性来指定。 D
非著名程序员
2018/02/02
2.5K0
基础篇章:关于 React Native 之 DrawerLayoutAndroid 组件的讲解
速度(Velocity)不背这个锅
不管是故事点还是理想人天的估算方法,估算的都是用户故事的相对大小,跟实际完成时间没有直接关系。估算是为了更好的计划,不能把估算当做一种承诺;速度是可变化的,可以用来修正计划的误差。
ThoughtWorks
2020/08/28
4540
速度(Velocity)不背这个锅
为什么你的Python包老是装不上?收下这个网站就对了
Python以第三方包丰富而著称,你想要的功能都能通过pip命令安装,避免什么都要自己重新造轮子尬尴。
数据森麟
2019/12/23
1.9K0
为什么你的Python包老是装不上?收下这个网站就对了
flutter上拉抽屉效果 flutter拖动抽屉效果
2、 抽屉关闭状态时,向上滑动,滑动过一定的高度时自动向上滑动打开,当没有滑动过一定的高度时,自动向下滑动,呈关闭状态;
早起的年轻人
2020/07/07
3.4K0
Android Q 手势导航背后的故事
新引入的手势导航是 Android Q 带来的主要变化之一。简而言之,采用这款新系统导航模式后,用户无需借助任何虚拟按键,只要滑动手势便能完成多种操作,包括: 返回上一级 (边缘侧滑),返回主屏 (从底部向上滑动)和启动设备助手 (从左下角或右下角斜向滑动)。
Android 开发者
2019/08/22
2.2K0
Android Q 手势导航背后的故事
react-navigation,刷新你的导航一、属性介绍二、案例
在2017年1月,新开源的react-navigation库备受瞩目。它有类似于原生版性能的体验效果,可能会成为未来RN导航组件中的主力军。该库包含三类组件: (1)StackNavigator:用
谦谦君子修罗刀
2018/05/02
19.7K0
react-navigation,刷新你的导航一、属性介绍二、案例
这个夏天不AC(杭州电2037)
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 28304 Accepted Submission(s): 15023
全栈程序员站长
2022/07/06
4970
浅谈DrawerLayout(抽屉效果)
DrawerLayout是V4包下提供的一种左滑右滑抽屉布局效果。 实现效果如下: 因为是官方提供的,所以使用起来也相对的比较简单。 DrawerLayout 提供 1、当界面弹出的时候,主要内容区
听着music睡
2018/05/18
1.6K0
Sublime Text 设置不记住打开的文件
加入以下配置信息: "remember_open_files": false, "hot_exit": false 搞定!
飞奔去旅行
2019/06/13
1K0
layui打开iframe窗口不刷新的问题
这个问题可能是我工作以来,最死磕不算bug的一个了,晚上熬夜到三点钟,终于找到了解决的办法。
王小婷
2019/04/29
4K0
layui打开iframe窗口不刷新的问题
模态对话框-B 类产品设计细节:对话框 vs 抽屉
  说明:对话框和抽屉都是在当前页面之上覆盖出现的组件,让用户在不离开主路径的情况下,查看信息/提示/反馈,或快速执行某些的操作。两者的交互模式有类似之处,使用场景也有所重叠。本文对两个组件的主要差别进行了对比,并提供方法帮助大家快速判断应该选择哪一个。
宜轩
2022/12/29
1.8K0
iOS简易抽屉效果
直接在controller里面加代码实现的抽屉效果 @interface ViewController () { UIView* _leftView; } @end @implementation ViewController (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view, typically from a nib. _leftView = [[UIVie
用户8671053
2021/10/29
8730
为什么不推荐使用PHPicker
iOS 14 中系统新增了一个图片选择器 PHPicker,官方建议使用 PHPicker 来替代原有的 API 进行图片选择,下面我们来看看 PHPicker 的优点:
ios-lan
2020/10/23
2.6K0
为什么不推荐使用PHPicker
fopen函数打开文件失败原因_为什么打开文件失败
大家好,我是疯狂的比特,一个每天在互联网上种菜和砍柴的程序员 今天给大家分享一个C语言初学者常见的一个问题。
全栈程序员站长
2022/11/04
4.6K0
点击加载更多

相似问题

为什么这个导航抽屉不打开?

11

打开/关闭不工作的导航抽屉

31

导航抽屉布局打开

23

导航抽屉缓慢打开

11

导航抽屉未打开

32
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文