在多个活动中使用导航抽屉

时间:2017-01-04 01:08:16

标签: android android-fragments navigation-drawer

我还在学习在Android上编程,这是我第一次创建导航抽屉。 我知道还有其他方法来创建导航抽屉,但在我看来,这是我理解的最简单方法,但现在我不知道如何在我的所有活动中扩展它。

这是代码:

Dashboard.java

    package com.example.alexandre.blueprint_apocalypse;

import android.content.Intent;
import android.support.v4.widget.DrawerLayout;
import android.support.v7.app.ActionBarDrawerToggle;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.MenuItem;
import android.view.View;
import android.widget.ImageButton;

public class Dashboard extends AppCompatActivity {

//Menu variables
private DrawerLayout mDrawerLayout;
private ActionBarDrawerToggle mToggle;

//Buttons
public ImageButton profile_button;

@Override
protected void onCreate(Bundle savedInstanceState)
{
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_dashboard);
    setTitle(R.string.dashboardLabel);

    //Create Menu
    mDrawerLayout = (DrawerLayout) findViewById(R.id.activity_dashboard);
    mToggle = new ActionBarDrawerToggle(this, mDrawerLayout, R.string.open, R.string.close);

    mDrawerLayout.addDrawerListener(mToggle);
    mToggle.syncState();

    getSupportActionBar().setDisplayHomeAsUpEnabled(true); //Activate hamburguer button

    //Change Activity using buttons
    changeActivity();
}

@Override
public boolean onOptionsItemSelected(MenuItem item)
{

    if(mToggle.onOptionsItemSelected(item))
    {
        return true;
    }

    return super.onOptionsItemSelected(item);
}

activity_dashboard.xml

<?xml version="1.0" encoding="utf-8"?>

<RelativeLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:weightSum="1">

    <ImageButton
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:src="@mipmap/dashboard_profile_icon"
        android:id="@+id/dashoard_profile_button"
        android:layout_marginTop="77dp"
        style="?android:attr/borderlessButtonStyle"
        android:background="@null"
        android:scaleType="fitXY"
        android:layout_alignParentTop="true"
        android:layout_alignParentLeft="true"
        android:layout_alignParentStart="true"
        android:layout_marginLeft="47dp"
        android:layout_marginStart="47dp"
        android:contentDescription="" />
</RelativeLayout>

<android.support.design.widget.NavigationView
    android:layout_width="wrap_content"
    android:layout_height="match_parent"
    app:menu="@menu/navigation_menu"
    android:layout_gravity = "start">
</android.support.design.widget.NavigationView>

navigation_menu.xml

<?xml version="1.0" encoding="utf-8"?>

<item android:id="@+id/menu_option_dashboard"
    android:title="Dashboard">
</item>

<item android:id="@+id/menu_option_profile"
    android:title="Profile">
</item>

<item android:id="@+id/menu_option_defenseHistory"
    android:title="Defense History">
</item>

<item android:id="@+id/menu_option_encyclopedia"
    android:title="Encyclopedia">
</item>

<item android:id="@+id/menu_option_worldScore"
    android:title="World Score">
</item>

如何将此扩展到我的所有活动?

2 个答案:

答案 0 :(得分:1)

以下是一个link示例,它将导航抽屉添加到多个activities

activity名为BaseActivity的愿望用作所有使用导航抽屉的活动的父级。因此,您的Dashboard课程可以扩展新的activity。示例中的MainActivity是扩展activity的{​​{1}}。

希望这会有所帮助。

答案 1 :(得分:0)

将导航视图添加到您希望导航抽屉出现的所有活动。 但您必须手动维护每个抽屉中物品的检查状态 按 DocumentBuilderFactory domFactory = DocumentBuilderFactory.newInstance(); DocumentBuilder builder = domFactory.newDocumentBuilder(); String xml = "<root><Title>test</Title></root>"; Document dDoc = builder.parse(new ByteArrayInputStream(xml.getBytes(StandardCharsets.UTF_8))); XPath xPath = XPathFactory.newInstance().newXPath(); Node node = (Node) xPath.evaluate("//Title", dDoc, XPathConstants.NODE); System.out.println(node.getTextContent()); final String text = node.getTextContent().trim(); if(text.matches("^\\\".*\\\"$")){ // Between double quotes } else{ // No quotes }