简体   繁体   English

如何在导航抽屉的recyclerview项中使用Intent打开新的活动片段?

[英]how to use intents in recyclerview items of navigation drawer to open a new activity fragment?

My activity class is like following: 我的activity课如下:

    /*ToolBar SetUp*/
    app_toolBar = (Toolbar) findViewById(R.id.toolbar_header);
    setSupportActionBar(app_toolBar);
    getSupportActionBar().setDisplayShowTitleEnabled(true);
    getSupportActionBar().setDisplayHomeAsUpEnabled(true);
    getSupportActionBar().setHomeButtonEnabled(true);


    String TITLES[] = {"Home", "Search", "HalalRewards", "Contact Us", "User Guide", "F.A.Q", "Settings", "Share"};
    int ICONS[] = {R.drawable.ic_action_home, R.drawable.ic_search, R.drawable.ic_rewardsss, R.drawable.ic_contact, R.drawable.ic_uguide, R.drawable.ic_faq, R.drawable.ic_settings, R.drawable.ic_shareee};

    String NAME = "ESignature IT Solution";
    String EMAIL = "info@esignature.com.np";
    int PROFILE = R.drawable.intologo;

    /*Drawer SetUp*/
    mRecyclerView = (RecyclerView) findViewById(R.id.RecyclerView); // Assigning the RecyclerView Object to the xml View
    mRecyclerView.setHasFixedSize(true);                            // Letting the system know that the list objects are of fixed size


    mAdapter = new DrawerAdapter(TITLES, ICONS, NAME, EMAIL, PROFILE);
    // Creating the Adapter of MyAdapter class(which we are going to see in a bit)
    // And passing the titles,icons,header view name, header view email,
    // and header view profile picture

    mRecyclerView.setAdapter(mAdapter);                              // Setting the adapter to RecyclerView
    mRecyclerView.setOnClickListener(new DrawerItemClickListener());
    mLayoutManager = new LinearLayoutManager(this);                 // Creating a layout Manager

    mRecyclerView.setLayoutManager(mLayoutManager);                 // Setting the layout Manager


    Drawer = (DrawerLayout) findViewById(R.id.DrawerLayout);        // Drawer object Assigned to the view
    mDrawerToggle = new ActionBarDrawerToggle(this, Drawer, app_toolBar, R.string.openDrawer, R.string.closeDrawer) {

        @Override
        public void onDrawerOpened(View drawerView) {
            super.onDrawerOpened(drawerView);
            // TO DO Execute code when Drawer view open
        }

        @Override
        public void onDrawerClosed(View drawerView) {
            super.onDrawerClosed(drawerView);
            // TO DO Execute code when once Drawer is close
        }


    };
    Drawer.setDrawerListener(mDrawerToggle); // Drawer Listener set to the Drawer toggle
    mDrawerToggle.syncState();               // Finally we set the drawer toggle sync State

}


@Override
public boolean onCreateOptionsMenu(Menu menu) {
    getMenuInflater().inflate(R.menu.menu_main, menu);
    return true;
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {

    switch (item.getItemId()) {

        case R.id.action_settings:
            return true;

    }

    return super.onOptionsItemSelected(item);
}

// create fragmrnt loader funtion
// id get from adapter ....


/* The click listner for ListView in the navigation drawer */
private class DrawerItemClickListener implements AdapterView.OnItemClickListener, View.OnClickListener {
    @Override
    public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
        /*selectItem(position);*/ ///////////
        // display view for selected nav drawer item
        displayView(position);

    }


    @Override
    public void onClick(View v) {

    }
}

// Diplaying fragment view for selected nav drawer list item
private void displayView(int position) {
    // update the main content by replacing fragments
    Fragment fragment = null;
    switch (position) {
        /*case 0:
            fragment = new Fragment();
            break;*/
        case 1:
            fragment = new SearchActivity();
            break;
         case 2:
            fragment = new HalalRewardsActivity();
            break;
        case 3:
            fragment = new ContactUsFragment();
            break;
        case 4:
            fragment = new GuideFragment();
            break;
        case 5:
            fragment = new FaqFragment();
            break;
        case 6:
            fragment = new SettingsFragment();
            break;
        case 7:
            fragment = new ShareFragment();
            break;

        default:
            break;
    }

    if (fragment != null) {
        FragmentManager fragmentManager = getFragmentManager();
        fragmentManager.beginTransaction()
                .replace(R.id.content_frame, fragment).commit();


        Drawer.closeDrawer(mRecyclerView);
    } else {
        // error in creating fragment
        Log.e("MainActivity", "Error in creating fragment");
    }
}
}

I am a new programmer. 我是新来的程序员。 So proper help would be praiseworthy. 因此,适当的帮助将是值得称赞的。 Thanks in advance. 提前致谢。

Don"t write: 不要写:

 mRecyclerView.setOnClickListener(new DrawerItemClickListener());

because OnClick is not applicable in RecyclerView. 因为OnClick在RecyclerView中不适用。 Instead use the following codes: 而是使用以下代码:

        final GestureDetector mGestureDetector = new GestureDetector(MainActivity.this, new GestureDetector.SimpleOnGestureListener() {

        @Override
        public boolean onSingleTapUp(MotionEvent e) {
            return true;
        }

    });


    mRecyclerView.addOnItemTouchListener(new RecyclerView.OnItemTouchListener() {
        @Override
        public boolean onInterceptTouchEvent(RecyclerView recyclerView, MotionEvent motionEvent) {
            View child = recyclerView.findChildViewUnder(motionEvent.getX(), motionEvent.getY());

            if (child != null && mGestureDetector.onTouchEvent(motionEvent)) {
                Drawer.closeDrawers();

                Toast.makeText(MainActivity.this, "The Item Clicked is: " + recyclerView.getChildPosition(child), Toast.LENGTH_SHORT).show();

                if (recyclerView.getChildAdapterPosition(child) == 0) {

                } else if (recyclerView.getChildAdapterPosition(child) == 5) {

                } else {
                    LoadFragmentView(recyclerView.getChildPosition(child));
                }
            }

            return false;
        }

        @Override
        public void onTouchEvent(RecyclerView recyclerView, MotionEvent motionEvent) {

        }
    });

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 如何从导航栏中打开一个新片段? - How to open a new fragment from the navigation drawer? 导航抽屉打开一个新片段 - Navigation Drawer open a new Fragment 如何在导航抽屉活动片段中正确使用谷歌地图片段 - How to properly use the google maps fragment in a navigation drawer activity fragment 如何在默认导航抽屉中使用活动而不是片段? - How to use activity instead of fragment in default navigation drawer? 如何在导航抽屉活动片段中使用Android Spinner进行多项选择 - How to use Android Spinner with multiple choice in Fragment of Navigation drawer activity 如何从片段中打开活动并添加片段活动的工具栏和导航抽屉? - How to open an activity from fragment and add toolbar and navigation drawer of fragment's activity? 如何通过单击 Android 中的导航抽屉项打开新活动 - How to open New Activity by clicking Navigation Drawer Item in Android 如何从导航抽屉中的列表中打开新的活动? - How to open new Activity from list in Navigation Drawer? 如何在Android中的导航抽屉活动中选择时打开新屏幕 - How to open new screen while choosing in navigation drawer activity in android 如何在导航抽屉中的应用程序栏上以不同的名称打开新活动 - How to open new activity with different name on app bar in navigation drawer
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM