首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >从导航抽屉回到家(Activity_main)

从导航抽屉回到家(Activity_main)
EN

Stack Overflow用户
提问于 2016-12-14 07:42:49
回答 1查看 1.8K关注 0票数 0

从昨天早上开始,我就一直在为这件事而挣扎。我对C++很熟悉(只是说我有编程经验)。我正在学习android编程。当我的应用程序启动时,它会弹出一个活动。我怀疑是

代码语言:javascript
运行
复制
setContentView(R.layout.activity_main);

在我的导航抽屉里,我有三个项目。一种叫做“猪银行”,它被认为是导航之家。“图”和“设置”是另外的两个,所以当有人点击导航抽屉中的"Piggy“时,它会返回到程序启动时加载的原始屏幕。这需要在不创建新活动的情况下完成,主屏幕中的数据非常重要,返回到主屏幕时不应该清除数据。它应该包含留在那里的数据。

这是我试过的

代码语言:javascript
运行
复制
   public boolean onNavigationItemSelected(MenuItem item) {
        // Handle navigation view item clicks here.
        int id = item.getItemId();
        android.app.FragmentManager fragmentManager = getFragmentManager();

        if (id == R.id.nav_PiggyBank) {
            setContentView(R.layout.activity_main);
            Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
            setSupportActionBar(toolbar);
            // getActionBar().setDisplayHomeAsUpEnabled(true);

            DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
            ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(
                    this, drawer, toolbar, R.string.navigation_drawer_open, R.string.navigation_drawer_close);
            drawer.setDrawerListener(toggle);
            toggle.syncState();

            NavigationView navigationView = (NavigationView) findViewById(R.id.nav_view);
            navigationView.setNavigationItemSelectedListener(this);
            // ATTENTION: This was auto-generated to implement the App Indexing API.
            // See https://g.co/AppIndexing/AndroidStudio for more information.
            client = new GoogleApiClient.Builder(this).addApi(AppIndex.API).build();

        } else if (id == R.id.nav_Graph) {
            fragmentManager.beginTransaction()
                    .replace(R.id.content_frame
                            , new Graph())
                    .commit();
        } else if (id == R.id.nav_Settings) {
            fragmentManager.beginTransaction()
                    .replace(R.id.content_frame
                            , new UserSettings())
                    .commit();
        }


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

这是我的activity_main

代码语言:javascript
运行
复制
<?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/drawer_layout"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:fitsSystemWindows="true"
    tools:openDrawer="start">

    <include
        layout="@layout/app_bar_main"
        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_main"
        app:menu="@menu/activity_main_drawer" />

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

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-12-14 07:59:35

您应该将if (id == R.id.nav_PiggyBank) {.}中的所有内容放在活动的onCreateMethod中。在if-case中,应该告诉FragmentManager用在其他两种情况下所做的PiggyBankFragment...like替换当前的片段容器(R.id.content_frame) ;-)

更新:

如果您想使用我建议使用的NavigationDrawer,建议使用多个包含内容和一个活动的片段,它包含片段容器和导航抽屉。您的应用程序的结构如下所示: 1.创建包含PiggyBankActivity和导航抽屉的fragment_container。没有别的--没有存钱罐内容2。创建一个PiggyBankFragment,其中包含您希望在“主页”第3页上显示的所有内容。您可以在onNavigationItemSelected中使用FragmentManager和FragmentTransactions替换片段并显示所需的内容。

您可以参考以下文档:https://developer.android.com/training/implementing-navigation/nav-drawer.html或本例https://www.simplifiedcoding.net/android-navigation-drawer-example-using-fragments/ ;-)

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

https://stackoverflow.com/questions/41137229

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档