android - 单击 Navigation Drawer Fragment 正在单击 Main Content Fragment

标签 android android-fragments navigation-drawer

获取有线输出

当我点击 Navigation Drawer 的 TextView 时,点击转到后面的 fragment (主要内容 fragment )

请有人帮助我做错了什么。

布局代码

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">

<!-- The toolbar -->
<android.support.v7.widget.Toolbar
    android:id="@+id/toolbar"
    android:layout_width="match_parent"
    android:layout_height="?attr/actionBarSize"
    android:background="?attr/colorPrimary"
    android:title="@string/app_name" />

<android.support.v4.widget.DrawerLayout
    android:id="@+id/drawer_layout"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@color/white">
    <!-- The main content view -->
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical">

        <include layout="@layout/content_main" />

    </LinearLayout>

    <!-- The navigation drawer -->
    <fragment
        android:id="@+id/left_drawer"
        android:name="app.compiler.fragment.FragmentDrawer"
        android:layout_width="320dp"
        android:layout_height="match_parent"
        android:layout_gravity="start"
        tools:layout="@layout/fragment_drawer"
        />
</android.support.v4.widget.DrawerLayout>

Java代码

public class ActivityMain extends AppCompatActivity {

    DrawerLayout mDrawerLayout;


    ActionBarDrawerToggle mDrawerToggle;

        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_ide);
            Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
            setSupportActionBar(toolbar);


            mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout);
            mDrawerToggle= new ActionBarDrawerToggle(this, mDrawerLayout,toolbar, R.string.app_name, R.string.app_name)
            {

                /** Called when a drawer has settled in a completely open state. */
                public void onDrawerOpened(View drawerView) {
                }

                /** Called when a drawer has settled in a completely closed state. */
                public void onDrawerClosed(View view) {
                }
            };
            mDrawerLayout.setDrawerListener(mDrawerToggle);


            if (savedInstanceState == null) {

                FragmentMain fragmentMain = new FragmentMain();

                FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
                transaction.add(R.id.container, fragmentMain);
                transaction.commit();

            }
        }

        @Override
        public boolean onCreateOptionsMenu(Menu menu) {
            MenuInflater inflater = new MenuInflater(this);
            inflater.inflate(R.menu.menu_main,menu);
            return true;
        }

        @Override
        public boolean onOptionsItemSelected(MenuItem item) {
            if (mDrawerToggle.onOptionsItemSelected(item)) {
                return true;
            }
            return super.onOptionsItemSelected(item);
        }

        @Override
        protected void onPostCreate(Bundle savedInstanceState) {
            super.onPostCreate(savedInstanceState);
            mDrawerToggle.syncState();
        }

        @Override
        public void onConfigurationChanged(Configuration newConfig) {
            super.onConfigurationChanged(newConfig);
            mDrawerToggle.onConfigurationChanged(newConfig);
        }

        @Override
        public void onBackPressed() {
            if(mDrawerLayout.isDrawerOpen(Gravity.START | Gravity.LEFT)){
                mDrawerLayout.closeDrawers();
                return;
            }
            super.onBackPressed();
        }
    }

检查下面 gif 图像中的代码输出 output of code

最佳答案

确保左抽屉布局中的所有内容都是可点击的。否则,点击将传递到底层 View ,在本例中为您的主要内容。您可以通过将 OnClickListener 设置为 FragmentDrawer 的 Root View 来实现:

myFragmentInsideTheDrawer.getView().setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View pView) {
                // do nothing here, just intercept click-events
            }
        });

关于android - 单击 Navigation Drawer Fragment 正在单击 Main Content Fragment,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34558804/

相关文章:

android - 使用循环向多个联系人发送短信

java - @Nullable java (android) 的含义

java - Android:抽屉导航布局动态更改图标

android - 抽屉导航不适用于 ICS 之前的版本

抽屉导航 fragment 中的 Android 操作栏选项卡

android - 使用 Google Analytics 进行原生移动和网站分析

java - 菜单页面上的按钮只能按特定顺序工作。 (Android Studio - Java)

android - 始终在 AndroidManifest 文件中声明 Activity 和服务?

java - 如何设置Adapter显示ListFragment

Android 抽屉导航打不开