0

당신의 도움이 필요합니다. 나는 안드로이드 프로그래밍의 첫 단계를 밟는다!탐색 서랍과 오른쪽 메뉴 간 충돌

SOS !!!

햄버거 아이콘을 클릭하거나 왼쪽에서 슬라이드하여 열거 나 닫을 수있는 클래식 탐색 서랍을 만들었습니다. 나 또한 오른쪽 메뉴 (Facebook 앱과 같은)를 만들고 GitHub (https://github.com/jfeinstein10/SlidingMenu)에서이 라이브러리를 사용했습니다. 결국 나는 서랍 내비게이션 메뉴와 오른쪽 메뉴 사이에 충돌이있었습니다.

내비게이션 메뉴가 열렸을 때 오른쪽에서 왼쪽으로 슬라이드하여 닫으려는 경우 오른쪽 메뉴를 엽니 다.

그래서 내 질문 : 내비게이션 서랍 메뉴가 열리면 오른쪽 메뉴가 열리지 않고 슬라이딩하여 네비게이션 서랍을 닫을 수 있다고하는 방법.

MainActivity에서 오른쪽 메뉴코드 :

protected void onCreate(Bundle savedInstanceState) { 
super.onCreate(savedInstanceState); 

SlidingMenu menu = new SlidingMenu(this); 
menu.setMode(SlidingMenu.RIGHT); 
menu.setTouchModeAbove(SlidingMenu.TOUCHMODE_FULLSCREEN); 
menu.setFadeDegree(0.35f); 
menu.attachToActivity(this, SlidingMenu.SLIDING_WINDOW); 
menu.setMenu(R.layout.sidemenu); 
menu.setBehindWidthRes(R.dimen.slidingmenu_behind_width); 

String[] items = {"Fisrt fragment","Second fragment"}; 
((ListView) findViewById(R.id.sidemenu)).setAdapter(
     new ArrayAdapter<Object>(
       this, 
       R.layout.sidemenu_item, 
       R.id.text, 
       items 
     ) 
); 

NavigationDrawer 코드 :

public class NavigationDrawerFragment extends Fragment { 
public static final String PREF_FILE_NAME="testpref"; 
public static final String KEY_USER_LEARNED_DRAWER="user_learned_drawer"; 

private ActionBarDrawerToggle mDrawerToggle; 
private ListView mDrawerList; 
private DrawerLayout mDrawerLayout; 

private boolean mUserLearnedDrawer; 
private boolean mFromSavedInstanceState; 

private View containerView; 

public NavigationDrawerFragment() { 
    // Required empty public constructor 
} 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    mUserLearnedDrawer = Boolean.valueOf(readFromPreferences(getActivity(),KEY_USER_LEARNED_DRAWER,"false")); 
    if(savedInstanceState!=null){ 
     mFromSavedInstanceState=true; 
    } 
} 

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, 
         Bundle savedInstanceState) { 
    // Inflate the layout for this fragment 
    return inflater.inflate(R.layout.fragment_navigation_drawer, container, false); 
} 

public void setUp(int fragmentId, DrawerLayout drawerLayout, final Toolbar toolbar){ 
    containerView = getActivity().findViewById(fragmentId); 
    mDrawerLayout = drawerLayout; 
    mDrawerToggle = new ActionBarDrawerToggle(getActivity(),drawerLayout,toolbar,R.string.drawer_open, R.string.drawer_close){ 

     @Override 
     public void onDrawerOpened(View drawerView) { 
      super.onDrawerOpened(drawerView); 
      if(!mUserLearnedDrawer){ 
       mUserLearnedDrawer=true; 
       saveToPreferences(getActivity(), KEY_USER_LEARNED_DRAWER, mUserLearnedDrawer+""); 
      } 
      getActivity().invalidateOptionsMenu(); 
     } 

     @Override 
     public void onDrawerClosed(View drawerView) { 
      super.onDrawerClosed(drawerView); 
      getActivity().invalidateOptionsMenu(); 
     } 

     public void onDrawerSlide(View drawerView, float slideOffset) { 
      super.onDrawerSlide(drawerView, slideOffset); 

      if(slideOffset<0.6) { 
       toolbar.setAlpha(1 - slideOffset); 
      } 
     } 
    }; 
    if(!mUserLearnedDrawer&&!mFromSavedInstanceState){ 
     mDrawerLayout.openDrawer(containerView); 
    } 
    mDrawerLayout.setDrawerListener(mDrawerToggle); 

    mDrawerLayout.post(new Runnable() { 
     @Override 
     public void run() { 
      mDrawerToggle.syncState(); 
     } 
    }); 

} 
public static void saveToPreferences(Context context,String preferenceName, String preferenceValue){ 
    SharedPreferences sharedPreferences = context.getSharedPreferences(PREF_FILE_NAME, context.MODE_PRIVATE); 
    SharedPreferences.Editor editor = sharedPreferences.edit(); 
    editor.putString(preferenceName, preferenceValue); 
    editor.apply(); 
} 
public static String readFromPreferences(Context context, String preferenceName, String defaultValue){ 
    SharedPreferences sharedPreferences = context.getSharedPreferences(PREF_FILE_NAME, Context.MODE_APPEND); 
    return sharedPreferences.getString(preferenceName, defaultValue); 
} 

답변

0

것은이 같은 또 다른 수준의 추가 : http://pastebin.com/xm8UZbvj

+0

하지만 여기에 인터페이스가 있습니다. 나는 논리 해결책이 필요하다. –

+0

당신은 어떤 생각이 있습니까? –

+0

아니요, 슬라이딩 메뉴 –

0

사용자가 시도 오른쪽 메뉴를 연 다음 탐색 서랍이 열려 있는지 확인한 다음 닫습니다. 아래 코드를 사용하여 -

if(mDrawerLayout.isDrawerOpen(mDrawerList)){ 
     mDrawerLayout.closeDrawer(mDrawerList); 
} 
+0

을 사용하지 않기 때문에 사용자가 오른쪽 메뉴를 열려면 탐색 용 서랍을 닫아야합니다. ActionBarDrawerToggle로 내 탐색 서랍을 만들었습니다. 이 코드에서 mDrawerList는 무엇을 의미합니까?! mDrawerList에 오류가 있습니다. 바보 같은 질문에 사과드립니다. 나는 초보자이다. –

+0

탐색 서랍을 사용하는 경우 탐색 서랍에서 사용하는 목록보기가 있어야합니다. 목록보기의 객체를 전달해야합니다. – Ravi

+0

사실 내 탐색 창에서 GridView 요소를 사용하려고하지만 어쨌든 개인 ListView mDrawerList를 추가했습니다. 그래서 지금은 코드에 실수가 없지만 에뮬레이터에서 열려고하지 않습니다. 나는 지금 무엇을 해야할지 모르겠다. 게시물에 추가 한 위의 코드를 살펴볼 수 있습니까? NavigationDrawer의 코드. 네가 한 말을 덧붙였다. 제발 당신의 전문적인 견해가 필요해. 나는 곧 대답을 기다릴 것이다. –