简体   繁体   English

Android OnItemClickListener未触发

[英]Android OnItemClickListener not firing

I recently finished a project using activities and a nav drawer which worked just fine. 我最近完成了一个项目,使用活动和导航抽屉,工作得很好。 I decided for a more robust project, I would use fragments instead of new activities. 我决定使用更强大的项目,我会使用片段而不是新活动。 Of course, my code is almost identical, but I can't get the onClick to fire when an item from the navigation drawer is selected. 当然,我的代码几乎相同,但是当选择导航抽屉中的项目时,我无法触发onClick。 Any help would be wonderful. 任何帮助都会很精彩。 I'm concerned about drawerNavListView (the left nav drawer) 我关心的是drawerNavListView(左侧导航抽屉)

MainTemplate extends Activity MainTemplate扩展了Activity

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main_template);

    // drawer creation
    mDrawer = (DrawerLayout) findViewById(R.id.drawer_layout);
    drawerListView = (ListView) findViewById(R.id.right_drawer);
    drawerNavListView = (ListView) findViewById(R.id.left_drawer);

    drawerItems = new ArrayList<NavDrawerItem>();
    navItem = new ArrayList<NavMenuItem>();

    navItem.add(new NavMenuItem("1", false, null));
    navItem.add(new NavMenuItem("2", true, "0"));
    navItem.add(new NavMenuItem("3", false, null));
    navItem.add(new NavMenuItem("4", false, null));
    navItem.add(new NavMenuItem("5", false, null));
    navItem.add(new NavMenuItem("6", false, null));
    navItem.add(new NavMenuItem("7", false, null));

    menuAdapter = new NavMenuAdapter(getApplicationContext(), navItem);
    drawerNavListView.setAdapter(menuAdapter);

    // create the blank fragment
    FragmentManager fm = getFragmentManager();
    FragmentTransaction ft = fm.beginTransaction();
    MainPageFrag mFrag = new MainPageFrag();
    ft.add(R.id.fragment_space, mFrag);
    ft.commit();

    // JSON get class creation for notifications
    new myNotificationTask().execute(); // call class at bottom

    ...

    // listener for clicking of a notification drawer item
    drawerListView.setOnItemClickListener(new SlideOptionsClickListener());

    // listener for selecting a navigation drawer item
    drawerNavListView.setOnItemClickListener(new SlideNavClickListener());

    // getting screen size
    Display display = getWindowManager().getDefaultDisplay();
    screenSize = new Point();
    display.getSize(screenSize);
    // setting pixels per minute for device
    ppm = (screenSize.x * 4) / (25 * 60);

    // create handler to call the notification update every 30 seconds
    final Handler mHandler = new Handler();

    ...
}

... (same class) ... (同班)

private class SlideNavClickListener implements ListView.OnItemClickListener {
    // this is where we inflate the fragment to the screen depending on the
    // selection
    FragmentManager fm = getFragmentManager();
    FragmentTransaction ft = fm.beginTransaction();

    @Override
    public void onItemClick(AdapterView<?> parent, View view, int position,
            long id) {
        FragmentTransaction ft = getFragmentManager().beginTransaction();

        switch (position) {
        case 0: 

            ScheduleViewFrag sFrag = new ScheduleViewFrag();
            ft.replace(R.id.fragment_space, sFrag);
            ft.addToBackStack(null);
            ft.commit();
            break;
        case 1: 
            DelayFrag dFrag = new DelayFrag();

            Bundle bundle = new Bundle();
            bundle.putString(NOTIF_ID, drawerItems.get(position).getId());
            dFrag.setArguments(bundle);

            ft.replace(R.id.fragment_space, dFrag);
            ft.addToBackStack(null);
            ft.commit();
            break;
        default: // add more fragments once implemented here
                break;

        }

        drawerNavListView.setSelection(position);
        mDrawer.closeDrawer(drawerNavListView);

    }
}

Turned out the entire problem was within my xml file for the main layout. 原来问题是我的xml文件中的主要布局。 Apparently, having the linearlayout containing the fragment for the main screen ABOVE the two listviews for the navigation drawers activated the onclick listeners. 显然,让包含主屏幕片段的线性布局在上面,导航抽屉的两个列表视图激活了onclick听众。 I originally had it below the two, and for some reason, that caused my issue. 我原本在两者之下,并且出于某种原因,这引起了我的问题。 Hopefully this helps someone in the future. 希望这可以帮助将来的某个人。

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

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM