我正在试用本教程中给出的导航抽屉(幻灯片菜单)。
上面的链接和我的不同之处在于,我试图调用活动而不是调用片段。当应用程序打开时,我无法看到导航抽屉菜单,我只能看到打开HOME活动的操作栏。
以下是我更改的代码:(是否需要一个片段,或者我可以在导航抽屉的第一个屏幕上使用活动?)
mTitle = mDrawerTitle = getTitle();
navMenuTitles = getResources().getStringArray(R.array.nav_drawer_items);
navMenuIcons = getResources().obtainTypedArray(R.array.nav_drawer_icons);
mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout);
mDrawerList = (ListView) findViewById(R.id.left_drawer);
navDrawerItems = new ArrayList<NavDrawerItem>();
navDrawerItems.add(new NavDrawerItem(navMenuTitles[0], navMenuIcons.getResourceId(1, -1)));
navDrawerItems.add(new NavDrawerItem(navMenuTitles[1], navMenuIcons.getResourceId(2, -1),true, "200"));
navMenuIcons.recycle();
mDrawerList.setOnItemClickListener(new SlideMenuClickListener());
adapter = new NavDrawerListAdapter(getApplicationContext(), navDrawerItems);
mDrawerList.setAdapter(adapter);
getActionBar().setDisplayHomeAsUpEnabled(true);
getActionBar().setHomeButtonEnabled(true);
mDrawerToggle = new ActionBarDrawerToggle(this, mDrawerLayout,
R.drawable.drawer,
R.string.drawer_open,
R.string.drawer_close
)
{
public void onDrawerClosed(View view)
{
getActionBar().setTitle(mTitle);
invalidateOptionsMenu();
}
public void onDrawerOpened(View drawerView)
{
getActionBar().setTitle(mDrawerTitle);
invalidateOptionsMenu();
}
};
mDrawerLayout.setDrawerListener(mDrawerToggle);
if (savedInstanceState == null)
{
displayView(0);
}
}
private class SlideMenuClickListener implements
ListView.OnItemClickListener
{
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id)
{
displayView(position);
}
}
private void displayView(int position)
{
switch (position)
{
case 0:
//fragment = new HomeFragment();
Intent intent = new Intent(this, Home.class);
startActivity(intent);
return;
case 1:
//fragment = new FindPeopleFragment();
Intent intent1 = new Intent(this, Profile.class);
startActivity(intent1);
break;
case 2:
//fragment = new PhotosFragment();
Intent intent2 = new Intent(this, Details.class);
startActivity(intent2);
break;
default:
break;
}
mDrawerList.setItemChecked(position, true);
mDrawerList.setSelection(position);
setTitle(navMenuTitles[position]);
mDrawerLayout.closeDrawer(mDrawerList);
}
我如何解决这个问题,以便在我的家庭活动中显示导航抽屉?
更新:
我甚至尝试了以下链接中给出的选项:
如何使用导航抽屉调用我的活动之一?但我仍然没有得到导航幻灯片菜单。
你已经有了构建和显示导航栏的代码,对吗?将上面的代码放入基本活动类。然后,要访问导航栏的每个活动都应继承该基类。
谷歌的IO 2014应用程序也做了同样的事情,看看他们的来源。
当你这样做时,你需要找到一种方法来保持抽屉的状态,因为你过渡到下一个活动。我不知道如何做到这一点,但您可能会在IO应用程序的源代码中找到答案。
如果您查看Android Navigation drawer的示例文档,它明确定义为使用片段而不是活动从导航栏加载不同的“页面”。随着Android应用程序生命周期的推移,片段更容易加载,对Android系统的影响也更小。它们也可以很容易地设置为背景,并被其他不同的片段取代。
话虽如此,你最好的方法是将你的活动转换成片段,并使用它们来加载你在应用中需要的不同页面。这并不是一项困难的任务,我将向你展示如何:
>
将所有活动更改为片段
public class nameOfFragment extends Fragment { }
使用onCreateView方法而不是onCreate
public View onCreateView() {
View view = inflater.inflate(R.layout.activity_main, container, false);
//any other elements in that view need to be included here in this manner.
Button rate = (Button) rootView.findViewById(R.id.rate);
return view;
}
这些改变应该足以将你的活动变成碎片。您需要对通过导航栏访问的所有片段执行相同的操作。
如果您需要任何进一步的帮助,请发布您正在使用的活动的代码。希望这有帮助:)
你不能那样做。。。导航抽屉是一个活动的布局,你不能在另一个活动中显示一个活动,你需要使用一个片段!
一个活动就是一个屏幕,你不能在另一个屏幕中显示屏幕,但片段可能是屏幕的一个组成部分,你可以在一个活动的容器中膨胀片段,然后向用户显示。
如果你不想这样做,你可以创建一个抽象活动并继承,但你不会在一个片段中有一个活动,你会有多个活动,每个活动都有自己的导航抽屉。
我正在尝试使用Visual Studio2017在Xamarin中创建一个导航抽屉。我在谷歌做了一些研究后创建了导航抽屉。但当我尝试从菜单中打开活动时,导航抽屉消失了。 我想在我的所有活动中都有我的导航抽屉,而不是在所有活动中重复。 链接到我的项目:https://github.com/chindara/XamarinAndroidNavigationDrawer 更新链接:https://git
有人能告诉我如何创建活动到这个主要活动,导航抽屉将看到在所有他们?我需要使用这个特定的MainActivity代码。我不需要使用碎片,只要3个简单的活动将添加到这个抽屉。 NavDrawer布局:
问题内容: 有没有一种方法可以只配置一次导航抽屉,并在多个Activites上显示它? 问题答案: 为此,只需创建一个实现抽屉的BaseActivity类,然后让所有其他活动扩展该抽屉即可。
有没有一种方法可以只配置一次导航抽屉,并在多个活动上显示它?
如何在所有活动中显示我的导航抽屉 在android studio中创建了一个新项目并有了导航抽屉活动后,我运行了它,但它没有显示在我的所有活动中。(我没有添加任何代码,只是创建活动并运行它)。我想知道如何在所有活动中显示导航抽屉,有什么办法吗?
我是android新手。我想实现一个由项目列表组成的导航抽屉,单击它会打开一个新活动。基本上是所有活动的导航抽屉。当我从导航抽屉中选择一个项目时,特定的活动就会打开。导航抽屉代码是通过执行空活动来实现的。我想在所有活动中实现导航抽屉功能,这些活动被视为空活动,这些活动已经有了一些功能,导航抽屉功能也可以工作。请帮帮我。 这是activity_header档案 这是我的主要活动 这是头活动java代