Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >将第二个活动中的导航抽屉添加到activity_main。在主活动中使用.opendrawer打开second

将第二个活动中的导航抽屉添加到activity_main。在主活动中使用.opendrawer打开second
EN

Stack Overflow用户
提问于 2019-06-02 01:32:11
回答 1查看 98关注 0票数 0

我已经创建了一个int activity_main项目,并希望向其中添加一个导航抽屉。我已经进入java文件夹。右键单击>新建>活动>导航抽屉活动。

注意:我没有用来创建菜单按钮的操作栏(3行堆叠)

现在,我不知道如何通过activity_main打开导航抽屉,而不会导致应用程序崩溃。谢谢。

我试过用一个按钮做一个单击监听,这个按钮的抽屉布局定义为dl (DrawerLayout dl = (DrawerLayout)findviewbyIOd(R.id.Drawer_layout))

我已经做了dl.openDrawer(Gravity.LEFT);我尝试将NavDrawer活动中的代码放入activity_main中,但应用程序无法启动。

代码语言:javascript
运行
AI代码解释
复制
public class MainActivity extends AppCompatActivity implements CompoundButton.OnCheckedChangeListener {
Switch OnOff;

EditText editText;
int NumberPicked;
int NumberPicked2;
private DrawerLayout dl;
private ActionBarDrawerToggle abdt;
Values[] troughvals = new Values[8];


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        BobbleSelector BS = new BobbleSelector();
        final DrawerLayout dl = (DrawerLayout)findViewById(R.id.dl);
        Button btnChange = (Button) findViewById(R.id.btnChange);
        Switch OnOff = (Switch) findViewById(R.id.OnOff);
        NumberPicker numberPicker2 = findViewById(R.id.numberPicker2);
        NumberPicker numberPicker = findViewById(R.id.numberPicker);
        numberPicker.setMinValue(00);
        numberPicker2.setMinValue(00);
        numberPicker2.setMaxValue(23);
        numberPicker.setMaxValue(23);
        btnChange.setOnClickListener( new View.OnClickListener(){
            public void onClick(View v){

                dl.openDrawer(Gravity.LEFT);

            }

        });
       OnOff.setTextOff("On");
       OnOff.setTextOn("Off");

    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        return abdt.onOptionsItemSelected(item) ||  super.onOptionsItemSelected(item);
    }

    public void handleSwitchClick(View view) {
        Switch s = (Switch) view;
        boolean isChecked = s.isChecked();
    }
    @Override
    public void onCheckedChanged(CompoundButton compoundButton, boolean isChecked){
        switch (compoundButton.getId()){
            case R.id.OnOff:
                break;
        }
    }
}

注意:我禁用了fab,因为在我的项目中找不到它。我已经为导航抽屉创建了一个自定义菜单

代码语言:javascript
运行
AI代码解释
复制
public class BobbleSelector extends AppCompatActivity
        implements NavigationView.OnNavigationItemSelectedListener {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_bobble_selector);
        Toolbar toolbar = findViewById(R.id.toolbar);
        setSupportActionBar(toolbar);
//        Button fab = findViewById(R.id.btnChange);
//        fab.setOnClickListener(new View.OnClickListener() {
//            @Override
//            public void onClick(View view) {
//                Snackbar.make(view, "Replace with your own action", Snackbar.LENGTH_LONG)
//                        .setAction("Action", null).show();
//            }
//        });

        DrawerLayout drawer = findViewById(R.id.dl);

        NavigationView navigationView = findViewById(R.id.nav_view);
        ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(
                this, drawer, toolbar, R.string.navigation_drawer_open, R.string.navigation_drawer_close);
        drawer.addDrawerListener(toggle);
        toggle.syncState();
        navigationView.setNavigationItemSelectedListener(this);
    }

    @Override
    public void onBackPressed() {
        DrawerLayout drawer = findViewById(R.id.dl);
        if (drawer.isDrawerOpen(GravityCompat.START)) {
            drawer.closeDrawer(GravityCompat.START);
        } else {
            super.onBackPressed();
        }
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.bobble_selector, menu);
        return true;
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        // Handle action bar item clicks here. The action bar will
        // automatically handle clicks on the Home/Up button, so long
        // as you specify a parent activity in AndroidManifest.xml.
        int id = item.getItemId();

        //noinspection SimplifiableIfStatement
        if (id == R.id.action_settings) {
            return true;
        }

        return super.onOptionsItemSelected(item);
    }

    @SuppressWarnings("StatementWithEmptyBody")
    @Override
    public boolean onNavigationItemSelected(MenuItem item) {
        // Handle navigation view item clicks here.
        int id = item.getItemId();



        DrawerLayout drawer = findViewById(R.id.dl);
        drawer.closeDrawer(GravityCompat.START);
        return true;
    }
}

抽屉布局

代码语言:javascript
运行
AI代码解释
复制
<?xml version="1.0" encoding="utf-8"?>
<android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/dl"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:fitsSystemWindows="true"
    tools:openDrawer="start">

    <include
        layout="@layout/app_bar_bobble_selector"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />

    <android.support.design.widget.NavigationView
        android:id="@+id/nav_view"
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        android:layout_gravity="start"
        android:fitsSystemWindows="true"
        app:headerLayout="@layout/nav_header_bobble_selector"
        app:menu="@menu/nav_menu" />

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

来自Logcat

代码语言:javascript
运行
AI代码解释
复制
2019-06-02 13:13:08.195 12745-12745/com.example.mytest E/AndroidRuntime: FATAL EXCEPTION: main
    Process: com.example.mytest, PID: 12745
    java.lang.NullPointerException: Attempt to invoke virtual method 'void android.support.v4.widget.DrawerLayout.openDrawer(int)' on a null object reference
        at com.example.mytest.MainActivity$1.onClick(MainActivity.java:49)
        at android.view.View.performClick(View.java:6294)
        at android.view.View$PerformClick.run(View.java:24770)
        at android.os.Handler.handleCallback(Handler.java:790)
        at android.os.Handler.dispatchMessage(Handler.java:99)
        at android.os.Looper.loop(Looper.java:164)
        at android.app.ActivityThread.main(ActivityThread.java:6494)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:440)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:807)

期望使用changebutton.openDrawer(Gravity.Left)打开抽屉,但应用程序崩溃。

EN

回答 1

Stack Overflow用户

发布于 2019-06-02 04:14:31

我发现我需要将与导航栏相关的代码移到OnCreate的底部,并将"SetContentView()“设置为导航栏的布局。

然后它就完美地工作了。在此之前

代码语言:javascript
运行
AI代码解释
复制
@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Button btn = findViewById(R.id.btnChange);

        drawer = findViewById(R.id.dl);

        ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(this,drawer, R.string.navigation_drawer_open,R.string.navigation_drawer_close);

        drawer.addDrawerListener(toggle);
        toggle.syncState();

        //Not nav
        Switch OnOff = (Switch) findViewById(R.id.OnOff);
        NumberPicker numberPicker2 = findViewById(R.id.numberPicker2);
        NumberPicker numberPicker = findViewById(R.id.numberPicker);
        numberPicker.setMinValue(00);
        numberPicker2.setMinValue(00);
        numberPicker2.setMaxValue(23);
        numberPicker.setMaxValue(23);

       OnOff.setTextOff("On");
       OnOff.setTextOn("Off");
        //not nav

    }

之后

代码语言:javascript
运行
AI代码解释
复制
@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Button btn = findViewById(R.id.btnChange);


        //Not nav
        Switch OnOff = (Switch) findViewById(R.id.OnOff);
        NumberPicker numberPicker2 = findViewById(R.id.numberPicker2);
        NumberPicker numberPicker = findViewById(R.id.numberPicker);
        numberPicker.setMinValue(00);
        numberPicker2.setMinValue(00);
        numberPicker2.setMaxValue(23);
        numberPicker.setMaxValue(23);

       OnOff.setTextOff("On");
       OnOff.setTextOn("Off");
        //not nav
        setContentView(R.layout.activity_bobble_selector);
        drawer = findViewById(R.id.dl);

        ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(this,drawer, R.string.navigation_drawer_open,R.string.navigation_drawer_close);
        assert drawer != null;
        drawer.addDrawerListener(toggle);
        toggle.syncState();
    }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56411626

复制
相关文章
运维所需技能体系
产品研发有自己的生命周期: 设计阶段---开发阶段---测试阶段---部署阶段---线上运行阶段---下线或者回滚阶段。
互联网老辛
2018/12/06
9220
python生成项目所需依赖文件
在开发或者在github上clone python项目时,我们经常能看到他们工程的根目录下有一个requirements.txt文件,并且在Readme中介绍使用前需要运行一些命令 这个时什么意思呢? 开发者希望我们能快速配置项目所需要的环境,所以我们需要这个很重要的文件
earthchen
2020/09/24
8140
软件工程 – 专业所需工具
非常好用的开源C/C++ IDE,与mingw搭配使用。替代vc6.0的免费解决方案。
ApacheCN_飞龙
2019/02/15
1.6K0
IOS应用提交所需的ICON
如果提交的ipa包中,未包含必要的Icon就会收到类似的通知,为什么偏偏是Icon-76呢?
meteoric
2018/11/19
8690
mall学习所需知识点
《IntelliJ-IDEA-Tutorial》:https://github.com/judasn/IntelliJ-IDEA-Tutorial
macrozheng
2019/07/22
4990
怎样快速搜索自己所需的资料?
摘要:我不敢保证现在100%的大学生不会使用互联网快速搜索自己所需的资料,但我绝对敢保证有70%~90%大学生不会使用此方法进行快速搜索自己所需的资料。本文以百度为例,分享三个重要技巧。 一、关键词:
用户1756920
2018/06/20
1.6K0
Eclipse中执行Hbase所需jar包
Eclipse中执行Hbase程序需要导入的jar包如下: 1 Hadoop全部jar包 2 Hbase部分jar包     Hbasejar包不能多也不能少,多了会冲突,少了会提醒找不到相应类,Hb
闵开慧
2018/03/30
1.5K0
Eclipse中执行Hbase所需jar包
ios上传appStore所需图片各种尺寸
主要尺寸为(以像素为单位):40 , 60 ,58,87,80,120,180,app store上显示的icon图标尺寸:1024
honey缘木鱼
2018/08/10
5.1K0
ios上传appStore所需图片各种尺寸
JNI所需的C语言知识小结
介绍 作为Android开发人员,会java是必须的,但是一般从事android业务逻辑开发的对C/C++的了解估计仅限于大学里不走心的课程。。。所以参考视频和资料小结一下JNI所需的c语言知识~ 基本数据类型 数据类型 boolean byte char short int long double float void signed unsigned java 1 1 2 2 4 8 8 4 无 无 C 无 无 1 2 4 4 8 4 有符号 无符号 sizeof()函数是用来测量某个类型所占的字节
用户1665735
2018/06/20
1.2K0
软件测试所需要掌握的技能
1.在测试中最重要的文档,他是测试工作的核心,是一组在测试时输入输出的标准,是软件需求的具体对照。编写测试用例,是测试人员的基本功,真正能写好的人并不多。
用户7880705
2020/12/28
1K0
【技能】数据科学家所需技能
小编邀请您,先思考: 1 您认为数据科学家需要具备哪些技能? 2 您擅长那些技能? 数据科学家所需具体技能,罗列如下: 1 数据分析技能 数据清洗 运用合适的统计知识和方法来分析数据 运用机器学习算
陆勤_数据人网
2018/02/28
7250
【技能】数据科学家所需技能
gsea或者gsva所需要的gmt文件
不得不说,数据资源真心丰富啊:The 32880 gene sets in the Molecular Signatures Database (MSigDB) are divided into 9 major collections, and several sub-collections.
生信技能树
2022/04/15
3.2K0
gsea或者gsva所需要的gmt文件
ChatGPT 的 AskYourPDF 插件所需链接如何获取?
目前 ChatGPT 主要有两款 PDF 对话插件,一个是 AskYourPDF 一个是 ChatWithPDF(需 ChatGPT Plus),他们都可以实现给一个公共的PDF 链接,然后进行持续对话,对读论文,阅读 PDF 格式的文档非常有用。
明明如月学长
2023/05/22
3.6K0
ChatGPT 的 AskYourPDF 插件所需链接如何获取?
高效编程所需要做的那点事
聊聊如果才能高效编程 计划(Plan) 所谓Plan,其实就是对应于编程中的设计阶段,当然,这里的Plan并不像设计那样重量级。它要求我们程序员在正式编程前至少要考虑一下下面的问题: 你这个程序,工具或是项目的目的,究竟是用来干什么的。你只有知道做什么,要达到什么样的目的 你这个程序,工具或是项目的目的,究竟是用来干什么的。你只有知道做什么,要达到什么样的目的,你才能做得对,做得好。 需要有什么样的功能。需要你给出来个功能列表。这样可以保证我们不会遗露了什么。准备好一些技术难题的前期调查
码神联盟
2018/04/02
5100
车载网络: OMNet++所需的组件支持
安装过程详见我的另两篇博客:Ubuntu: 安装 OMNeT++ 仿真工具、车载网络: OMNeT++安装CAN协议 。
JNingWei
2018/09/27
1.1K0
【Struts】配置Struts所需类库详细解析
在 Struts框架配置详情 中,谈到了使用Struts所必须的Jar文件。这里对使用到的Jar文件进行详细解析。
陈树义
2022/04/29
2910
【Struts】配置Struts所需类库详细解析
你所需要掌握的问题排查知识
由于业务应用 bug(本身或引入第三方库)、环境原因、硬件问题等原因,线上服务出现故障 / 问题几乎不可避免。例如,常见的现象包括请求超时、用户明显感受到系统发生卡顿等等。
测试开发技术
2020/01/17
1.4K0
你所需要掌握的问题排查知识
SSM整合所需的maven配置文件
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" x
说故事的五公子
2019/10/24
6750
点击加载更多

相似问题

缺少所需参数

14

Web所需参数

53

缺少所需参数

22

缺少所需参数

11

所需隐含参数

10
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

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

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档