继承所有活动导览 [英] inherit navigation drawer in all activities
本文介绍了继承所有活动导览的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我有一个抽屉式导航栏,现在我想这个导航抽屉在我的所有活动谁能告诉我如何继承和我所有的活动中使用抽屉式导航
这里是我的code:
包com.astro.famouspandit.Activities.Abstract;进口android.content.Intent;
进口android.content.res.Configuration;
进口android.os.Bundle;
进口android.support.design.widget.FloatingActionButton;
进口android.support.design.widget.Snackbar;
进口android.support.v4.view.GravityCompat;
进口android.support.v4.widget.DrawerLayout;
进口android.support.v7.app.ActionBarDrawerToggle;
进口android.support.v7.app.AppCompatActivity;
进口android.support.v7.widget.Toolbar;
进口android.view.Menu;
进口android.view.MenuItem;
进口android.view.View;
进口android.view.ViewStub;
进口android.widget.FrameLayout;
进口android.widget.LinearLayout;进口com.astro.famouspandit.Activities.Activity.ChartStyle;
进口com.astro.famouspandit.Activities.Activity.Contact;
进口com.astro.famouspandit.Activities.Activity.Settings;
进口com.astro.famouspandit.R;公共类NavigationActivity扩展AppCompatActivity实现View.OnClickListener { 保护DrawerLayout mDrawerLayout; 受保护的FrameLayout mFrameLayout_ContentFrame;
保护ActionBarDrawerToggle mActionBarDrawerToggle;
保护工具栏mToolbar;
私人的LinearLayout mDrawerList2; @覆盖
保护无效的onCreate(最终捆绑savedInstanceState){
super.onCreate(savedInstanceState);
的setContentView(R.layout.activity_navigation); mFrameLayout_ContentFrame =(的FrameLayout)findViewById(R.id.main_activity_content_frame);
mDrawerList2 =(的LinearLayout)findViewById(R.id.left_drawer2);
mToolbar =(工具栏)findViewById(R.id.toolbar);
setSupportActionBar(mToolbar);
mDrawerLayout =(DrawerLayout)findViewById(R.id.main_activity_DrawerLayout);
mDrawerLayout.closeDrawers();
mDrawerLayout.setStatusBarBackground(R.color.colorPrimary); mActionBarDrawerToggle =新ActionBarDrawerToggle
(
这个,
mDrawerLayout,
mToolbar,
R.string.drawer_open,
R.string.drawer_close
){
@覆盖
公共无效onDrawerSlide(查看drawerView,浮动slideOffset){
//禁用默认情况下,汉堡/箭头动画
super.onDrawerSlide(drawerView,0);
}
}; mDrawerLayout.setDrawerListener(mActionBarDrawerToggle); 如果(getSupportActionBar()!= NULL){
getSupportActionBar()setDisplayHomeAsUpEnabled(真)。
getSupportActionBar()setDisplayShowHomeEnabled(真)。
getSupportActionBar()setHomeButtonEnabled(真)。
}
mActionBarDrawerToggle.syncState(); }
@覆盖
公共无效的onClick(视图v){ }
prepareOptionsMenu(菜单菜单)上公共布尔{
//如果资产净值抽屉被打开,隐藏操作项相关内容视图
布尔drawerOpen = mDrawerLayout.isDrawerOpen(mDrawerList2);
menu.findItem(R.id.action_Aboutus).setVisible(drawerOpen!);
返回super.on prepareOptionsMenu(菜单);
}
公共布尔onCreateOptionsMenu(菜单菜单){
//充气菜单;如果是present这增加了项目操作栏。
。getMenuInflater()膨胀(R.menu.menu,菜单);
返回true;
}
公共布尔onOptionsItemSelected(菜单项项){
INT项= item.getItemId();
开关(项目){ 案例R.id.action_Settings:{
意向意图=新意图(这一点,Settings.class);
startActivity(意向); }打破; 案例R.id.action_Contact_us:{
意向意图=新意图(这一点,Contact.class);
startActivity(意向); }打破; 案例R.id.action_Aboutus:{
意向意图=新意图(这一点,ChartStyle.class);
startActivity(意向); }打破; 案例R.id.action_Profile:{
意向意图=新意图(这一点,ChartStyle.class);
startActivity(意向); }打破;
} 返回super.onOptionsItemSelected(项目);
}
}< android.support.v4.widget.DrawerLayout的xmlns:机器人=http://schemas.android.com/apk/res/android
机器人:ID =@ + ID / main_activity_DrawerLayout
机器人:layout_width =match_parent
机器人:layout_height =match_parent
机器人:fitsSystemWindows =真正的>
<的LinearLayout机器人:ID =@ + ID / left_drawer2
机器人:layout_width =280dp
机器人:layout_height =match_parent
机器人:layout_gravity =开始
机器人:方向=垂直
机器人:choiceMode =singleChoice
机器人:分=@机器人:彩色/透明
机器人:dividerHeight =0dp 机器人:背景=#0F6177/> <! - 的主要内容视图 - >
<的LinearLayout
机器人:layout_width =match_parent
机器人:layout_height =match_parent
机器人:方向=垂直> <包括布局=@布局/工具栏/>
<的FrameLayout
机器人:ID =@ + ID / main_activity_content_frame
机器人:layout_width =match_parent
机器人:layout_height =match_parent/> < / LinearLayout中> <! - 导航抽屉 - >
< /android.support.v4.widget.DrawerLayout>
类,我想继承navigationdrawer:
公共类联系扩展NavigationActivity实现View.OnClickListener {
私人的EditText MNAME,mNumber,mEmail,mMessage;
私人FancyButton mSbmt; @覆盖
保护无效的onCreate(捆绑savedInstanceState){
super.onCreate(savedInstanceState);
解决方案
要继承导航抽屉,你需要使用片段。因为我们可以用单一的活动中的多个片段。所以你不能设置在 NavigationActivity
其它活动。因此,使用多个片段,并从你的 NavigationActivity
或从其他片段中调用它们。
I have a navigation drawer and now i want this navigation drawer to be in all my activities can anyone tell me how to inherit and use navigation drawer in all my activities
here is my code:
package com.astro.famouspandit.Activities.Abstract;
import android.content.Intent;
import android.content.res.Configuration;
import android.os.Bundle;
import android.support.design.widget.FloatingActionButton;
import android.support.design.widget.Snackbar;
import android.support.v4.view.GravityCompat;
import android.support.v4.widget.DrawerLayout;
import android.support.v7.app.ActionBarDrawerToggle;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewStub;
import android.widget.FrameLayout;
import android.widget.LinearLayout;
import com.astro.famouspandit.Activities.Activity.ChartStyle;
import com.astro.famouspandit.Activities.Activity.Contact;
import com.astro.famouspandit.Activities.Activity.Settings;
import com.astro.famouspandit.R;
public class NavigationActivity extends AppCompatActivity implements View.OnClickListener{
protected DrawerLayout mDrawerLayout;
protected FrameLayout mFrameLayout_ContentFrame;
protected ActionBarDrawerToggle mActionBarDrawerToggle;
protected Toolbar mToolbar;
private LinearLayout mDrawerList2;
@Override
protected void onCreate(final Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_navigation);
mFrameLayout_ContentFrame = (FrameLayout) findViewById(R.id.main_activity_content_frame);
mDrawerList2 = (LinearLayout) findViewById(R.id.left_drawer2);
mToolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(mToolbar);
mDrawerLayout = (DrawerLayout) findViewById(R.id.main_activity_DrawerLayout);
mDrawerLayout.closeDrawers();
mDrawerLayout.setStatusBarBackground(R.color.colorPrimary);
mActionBarDrawerToggle = new ActionBarDrawerToggle
(
this,
mDrawerLayout,
mToolbar,
R.string.drawer_open,
R.string.drawer_close
) {
@Override
public void onDrawerSlide(View drawerView, float slideOffset) {
// Disables the burger/arrow animation by default
super.onDrawerSlide(drawerView, 0);
}
};
mDrawerLayout.setDrawerListener(mActionBarDrawerToggle);
if (getSupportActionBar() != null) {
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
getSupportActionBar().setDisplayShowHomeEnabled(true);
getSupportActionBar().setHomeButtonEnabled(true);
}
mActionBarDrawerToggle.syncState();
}
@Override
public void onClick(View v) {
}
public boolean onPrepareOptionsMenu(Menu menu) {
// If the nav drawer is open, hide action items related to the content view
boolean drawerOpen = mDrawerLayout.isDrawerOpen(mDrawerList2);
menu.findItem(R.id.action_Aboutus).setVisible(!drawerOpen);
return super.onPrepareOptionsMenu(menu);
}
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.menu, menu);
return true;
}
public boolean onOptionsItemSelected(MenuItem item){
int items = item.getItemId();
switch(items){
case R.id.action_Settings:{
Intent intent = new Intent(this,Settings.class);
startActivity(intent);
}break;
case R.id.action_Contact_us:{
Intent intent = new Intent(this,Contact.class);
startActivity(intent);
}break;
case R.id.action_Aboutus:{
Intent intent = new Intent(this,ChartStyle.class);
startActivity(intent);
}break;
case R.id.action_Profile:{
Intent intent = new Intent(this,ChartStyle.class);
startActivity(intent);
}break;
}
return super.onOptionsItemSelected(item);
}
}
<android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/main_activity_DrawerLayout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fitsSystemWindows="true">
<LinearLayout android:id="@+id/left_drawer2"
android:layout_width="280dp"
android:layout_height="match_parent"
android:layout_gravity="start"
android:orientation="vertical"
android:choiceMode="singleChoice"
android:divider="@android:color/transparent"
android:dividerHeight="0dp"
android:background="#0F6177"/>
<!-- The main content view -->
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<include layout="@layout/toolbar" />
<FrameLayout
android:id="@+id/main_activity_content_frame"
android:layout_width="match_parent"
android:layout_height="match_parent" />
</LinearLayout>
<!-- The navigation drawer -->
</android.support.v4.widget.DrawerLayout>
class where i want to inherit navigationdrawer :
public class Contact extends NavigationActivity implements View.OnClickListener {
private EditText mName,mNumber,mEmail,mMessage;
private FancyButton mSbmt;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
解决方案
To inherit Navigation Drawer you need to use Fragments. Because we can use multiple fragments inside single activity. So you can not set another activity inside NavigationActivity
. So use multiple fragments and call them from your NavigationActivity
or from other fragments.
这篇关于继承所有活动导览的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文