0

동일한 활동에 대해 탐색 창과 격자보기를 사용하고 있지만 한 번 수행하면 스크롤하거나 활동 중 아무 것도 클릭 할 수 없습니다. 또한 탐색 서랍은 터치를 열거 나 터치에 응답하지 않습니다. 나는 지금 적어도 3 번은 내 코드를 점검했지만 여전히 작동하지 않는 이유를 파악할 수 없다.활동에 Gridview를 추가 할 때 탐색 서랍이 생깁니다.

활동 코드 :

package com.project.iandwe; 

import android.app.ActionBar; 
import android.app.Activity; 
import android.support.v4.app.Fragment; 
import android.support.v4.app.FragmentActivity; 
import android.support.v4.app.FragmentManager; 
import android.content.Intent; 
import android.content.res.Configuration; 
import android.content.res.TypedArray; 
import android.graphics.Color; 
import android.graphics.drawable.ColorDrawable; 
import android.os.Bundle; 
import android.support.v4.app.ActionBarDrawerToggle; 
import android.support.v4.widget.DrawerLayout; 
import android.util.Log; 
import android.view.Menu; 
import android.view.MenuItem; 
import android.view.View; 
import android.widget.AdapterView; 
import android.widget.GridView; 
import android.widget.ListView; 
import com.google.android.gms.common.api.GoogleApiClient; 
import com.project.iandwe.Adaptor.EventAdapter; 
import com.project.iandwe.Adaptor.NavigationDrawerListAdapter; 
import com.project.iandwe.Fragments.DetailedEvent; 
import com.project.iandwe.Menu.*; 
import com.project.iandwe.Navigation.NavigationDrawer; 

import java.util.ArrayList; 

/** 
* Created by NathanDrake on 5/10/2014. 
*/ 
public class HomePage extends FragmentActivity implements AdapterView.OnItemClickListener{ 

    //public static final int ADD_EVENT_REQUEST =1; 
    private DrawerLayout drawerLayout; 
    private ListView drawerListView; 
    private ActionBarDrawerToggle actionBarDrawerToggle; 

    // nav drawer title 
    private CharSequence drawerTitle; 
    // used to store app title 
    private CharSequence title; 

    // slide menu items 
    private String[] navMenuTitles; 
    private TypedArray navMenuIcons; 

    private ArrayList<NavigationDrawer> navigationDrawers; 
    private NavigationDrawerListAdapter adapter; 

    // Google client to interact with Google API 
    //private GoogleApiClient mGoogleApiClient; 

    GridView gridView; 

    @Override 
    public void onCreate(Bundle savedInstanceState){ 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.home_page); 

     ActionBar actionBar = getActionBar(); 
     actionBar.setBackgroundDrawable(new ColorDrawable(Color.BLUE)); 
     actionBar.show(); 

     //Initialize grid view for home page for displaying events 
     gridView = (GridView) findViewById(R.id.gridViewCalendar); 
     gridView.setAdapter(new EventAdapter(this)); 
     //for Slider menu 
     title = drawerTitle = getTitle(); 

     // load slide menu items 
     navMenuTitles = getResources().getStringArray(R.array.nav_drawer_items); 
     // nav drawer icons from resources 
     navMenuIcons = getResources().obtainTypedArray(R.array.nav_drawer_icons); 
     drawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout); 
     drawerListView = (ListView) findViewById(R.id.list_slidermenu); 
     navigationDrawers = new ArrayList<NavigationDrawer>(); 

     // adding nav drawer items to array 
     // Home 
     navigationDrawers.add(new NavigationDrawer(navMenuTitles[0], navMenuIcons.getResourceId(0, -1))); 
     // View Contacts 
     navigationDrawers.add(new NavigationDrawer(navMenuTitles[1], navMenuIcons.getResourceId(1, -1))); 
     // View Groups 
     navigationDrawers.add(new NavigationDrawer(navMenuTitles[2], navMenuIcons.getResourceId(2, -1))); 
     // View Invites 
     navigationDrawers.add(new NavigationDrawer(navMenuTitles[3], navMenuIcons.getResourceId(3, -1))); 
     // View Settings 
     navigationDrawers.add(new NavigationDrawer(navMenuTitles[4], navMenuIcons.getResourceId(4, -1))); 
     // Log Off 
     navigationDrawers.add(new NavigationDrawer(navMenuTitles[5], navMenuIcons.getResourceId(5, -1))); 

     // Recycle the typed array 
     navMenuIcons.recycle(); 

     // setting the nav drawer list adapter 
     adapter = new NavigationDrawerListAdapter(getApplicationContext(), navigationDrawers); 
     drawerListView.setAdapter(adapter); 
     drawerListView.setOnItemClickListener(new DrawerItemClickListener()); 
     // enabling action bar app icon and behaving it as toggle button 
     getActionBar().setDisplayHomeAsUpEnabled(true); 
     getActionBar().setHomeButtonEnabled(true); 

     actionBarDrawerToggle = new ActionBarDrawerToggle(this, drawerLayout, R.drawable. 
       ic_drawer, //nav menu toggle icon 
       R.string.app_name, // navigation drawer open - description for accessibility 
       R.string.app_name 
     ) { // navigation drawer close - description for accessibility 
      public void onDrawerClosed(View view) { 
       getActionBar().setTitle(title); 
       // calling onPrepareOptionsMenu() to show action bar icons 
       invalidateOptionsMenu(); 
      } 

      public void onDrawerOpened(View drawerView) { 
       getActionBar().setTitle(drawerTitle); 
       // calling onPrepareOptionsMenu() to hide action bar icons 
       invalidateOptionsMenu(); 
      } 

     }; 

     drawerLayout.setDrawerListener(actionBarDrawerToggle); 
     if (savedInstanceState == null) { 
      // on first time display view for first nav item 
      displayView(0); 
     } 

    } 

    @Override 
    public boolean onPrepareOptionsMenu(Menu menu) { 
     // if nav drawer is opened, hide the action items 
     boolean drawerOpen = drawerLayout.isDrawerOpen(drawerListView); 
     menu.findItem(R.id.action_add).setVisible(!drawerOpen); 
     return super.onPrepareOptionsMenu(menu); 

    } 


    @Override 
    public void onItemClick(AdapterView<?> parent, View view, int position, long id) { 
     Intent intent = new Intent(this, DetailedEvent.class); 
     intent.putExtra("Eventid",""); 
     startActivity(intent); 
    } 


    /** 
    * Slide menu item click listener 
    * */ 

    private class DrawerItemClickListener implements ListView.OnItemClickListener{ 
     @Override 
     public void onItemClick(AdapterView<?> parent, View view, int position, long id) { 
      displayView(position); 
     } 
    } 
    /** 
    * Displaying 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 HomeFragment(); 
       break; 
      case 1: 
       fragment = new ContactsFragments(); 
       break; 
      case 2: 
       fragment = new GroupFragment(); 
       break; 
      case 3: 
       fragment = new InvitesFragment(); 
       break; 
      case 4: 
       fragment = new SettingsFragment(); 
       break; 
      case 5: 
       fragment = new LogOffFragment(); 
       break; 

      default: 
       break; 
     } 

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

      // update selected item and title, then close the drawer 
      drawerListView.setItemChecked(position, true); 
      drawerListView.setSelection(position); 
      setTitle(navMenuTitles[position]); 
      drawerLayout.closeDrawer(drawerListView); 
     } else { 
      // error in creating fragment 
      Log.e("MainActivity", "Error in creating fragment"); 
     } 
    } 

    @Override 
    public void setTitle(CharSequence title) { 
     this.title = title; 
     getActionBar().setTitle(this.title); 
    } 

    /** 
    * When using the ActionBarDrawerToggle, you must call it during 
    * onPostCreate() and onConfigurationChanged()... 
    */ 


    @Override 
    protected void onPostCreate(Bundle savedInstanceState) { 
     super.onPostCreate(savedInstanceState); 
     // Sync the toggle state after onRestoreInstanceState has occurred. 
     actionBarDrawerToggle.syncState(); 
    } 

    @Override 
    public void onConfigurationChanged(Configuration newConfig) { 
     super.onConfigurationChanged(newConfig); 
     // Pass any configuration change to the drawer toggles 
     actionBarDrawerToggle.onConfigurationChanged(newConfig); 
    } 



    @Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     // Inflate the menu; this adds items to the action bar if it is present. 
     getMenuInflater().inflate(R.menu.add_event_menu, menu); 
     return true; 
    } 

    @Override 
    public boolean onOptionsItemSelected(MenuItem item) { 
     // Handle item selection 
     switch (item.getItemId()) { 
      case R.id.action_add: 
       Intent intent = new Intent(this,AddEvent.class); 
       startActivity(intent); 
       return true; 
      default: 
       return super.onOptionsItemSelected(item); 
     } 
    } 


} 

같은 활동에 대한 내 XML 코드는 다음과 같습니다

<?xml version="1.0" encoding="utf-8"?> 

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
       android:layout_width="match_parent" 
       android:layout_height="match_parent"> 

    <android.support.v4.widget.DrawerLayout 
      xmlns:android="http://schemas.android.com/apk/res/android" 
      android:id="@+id/drawer_layout" 
      android:layout_width="match_parent" 
      android:layout_height="match_parent"> 

     <!-- Framelayout to display Fragments --> 
     <FrameLayout 
       android:id="@+id/frame_container" 
       android:layout_width="match_parent" 
       android:layout_height="match_parent" > 
     </FrameLayout> 


     <!-- Listview to display slider menu --> 
     <ListView 
       android:id="@+id/list_slidermenu" 
       android:layout_width="240dp" 
       android:layout_height="match_parent" 
       android:layout_gravity="start" 
       android:choiceMode="singleChoice" 
       android:divider="#FFCC00" 
       android:dividerHeight="1dp" 
       android:listSelector="@drawable/list_selector" 
       android:background="#111"/> 
    </android.support.v4.widget.DrawerLayout> 


    <GridView 
      android:layout_width="fill_parent" 
      android:layout_height="fill_parent" 
      android:id="@+id/gridViewCalendar" 
      android:layout_gravity="left|top" 
      android:numColumns="auto_fit" 
      android:horizontalSpacing="1dp" 
      android:verticalSpacing="1dp" 
      android:stretchMode="spacingWidthUniform" 
      android:columnWidth="174dp" 
      android:scrollingCache="true" 
      android:padding="0dp" 
      android:alwaysDrawnWithCache="true" 
      android:gravity="center_horizontal" 
      android:clipChildren="true" 

      /> 


</RelativeLayout> 

나는이 페이지에서 단계를 확인 : creating a navigation drawer 나는 서랍을 제거하거나 경우 것입니다 격자보기, 모든 것이 잘 작동합니다. 캐시를 무효화하고 IntelliJ를 사용하여 다시 시작했지만 여전히 운이 좋습니다. 그래서 다른 문제를 확인했지만 지금까지이 문제를 해결하는 데는 운이 없다.

답변

0

gridview 어댑터 클래스 내에서 gridview의 onclick 수신기를 옮겨야 만했습니다. 그런 다음 작업이 시작되었습니다. 왜 이런 일이 발생했는지 확실하지 않습니다.