현재 안드로이드 공부하고 있는 학생입니다. <div>다름이 아니라 네비게이션 드로어 클릭 이벤트를 사용해서 프레그먼트를 교체해주는것을 구현 하려고 하는데</div> <div>지금 프레그먼트가 화면에 뜨면 네미게이션 드로어의 클릭 이벤트가 먹통이 되더라구요...</div> <div><br></div> <div>구글링을 해봤더니 네비게이션 드로어가 항상 최상위에 선언되어야지 클릭이벤트를 인식할 수 있다고 하더군요</div> <div>혹시 다른 문제인가 해서 처음에 프레그먼트를 띄우지 않고 클릭으로 띄워 봤더니 되더라구요 ㅎㅎ 그래봤자 한번만 인식 되고</div> <div>프레그먼트 나오고 부터는 다시 프레그먼트에 터치 이벤트가 막히는 현상이 계속 되었습니다...</div> <div>그래서 이거에 대해 다시 구글링 해봤는데 아직까지 찾지 못하고 있습니다 ㅠㅠ</div> <div><br></div> <div>아래는 제 코드 입니다. 코드는 안드로이드 스튜디오에서 제공하는 네비게이션 액티비티를 수정해서 사용했습니다. </div> <div><br></div> <div>1. 메인 엑티비티 OnCreate 부분</div> <div><pre style="background-color:#2b2b2b;color:#a9b7c6;font-family:'굴림체';font-size:9.6pt;"><span style="color:#bbb529;">@Override<br></span><span style="color:#cc7832;">protected void </span><span style="color:#ffc66d;">onCreate</span>(Bundle savedInstanceState) {<br><span style="color:#cc7832;">super</span>.onCreate(savedInstanceState)<span style="color:#cc7832;">;<br></span><span style="color:#cc7832;"> </span>setContentView(R.layout.<span style="color:#9876aa;font-style:italic;">activity_main</span>)<span style="color:#cc7832;">;<br></span><span style="color:#cc7832;"><br></span><span style="color:#cc7832;"> </span>Toolbar toolbar = (Toolbar) findViewById(R.id.<span style="color:#9876aa;font-style:italic;">toolbar</span>)<span style="color:#cc7832;">;<br></span><span style="color:#cc7832;"> </span>setSupportActionBar(toolbar)<span style="color:#cc7832;">;<br></span><span style="color:#cc7832;"><br></span><span style="color:#cc7832;"> </span>DrawerLayout drawer = (DrawerLayout) findViewById(R.id.<span style="color:#9876aa;font-style:italic;">drawer_layout</span>)<span style="color:#cc7832;">;<br></span><span style="color:#cc7832;"> </span><span style="color:#9876aa;">toggle </span>= <span style="color:#cc7832;">new </span>ActionBarDrawerToggle(<br><span style="color:#cc7832;">this, </span>drawer<span style="color:#cc7832;">, </span>toolbar<span style="color:#cc7832;">, </span>R.string.<span style="color:#9876aa;font-style:italic;">navigation_drawer_open</span><span style="color:#cc7832;">, </span>R.string.<span style="color:#9876aa;font-style:italic;">navigation_drawer_close</span>)<span style="color:#cc7832;">;<br></span><span style="color:#cc7832;"> </span>drawer.setDrawerListener(<span style="color:#9876aa;">toggle</span>)<span style="color:#cc7832;">;<br></span><span style="color:#cc7832;"> </span><span style="color:#9876aa;">toggle</span>.syncState()<span style="color:#cc7832;">;<br></span><span style="color:#cc7832;"><br></span><span style="color:#cc7832;"> </span>FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.<span style="color:#9876aa;font-style:italic;">fab</span>)<span style="color:#cc7832;">;<br></span><span style="color:#cc7832;"> </span>fab.setOnClickListener(<span style="color:#cc7832;">new </span>View.OnClickListener() {<br><span style="color:#bbb529;">@Override<br></span><span style="color:#bbb529;"> </span><span style="color:#cc7832;">public void </span><span style="color:#ffc66d;">onClick</span>(View view) {<br> Snackbar.<span style="font-style:italic;">make</span>(view<span style="color:#cc7832;">, </span><span style="color:#6a8759;">"Replace with your own action"</span><span style="color:#cc7832;">, </span>Snackbar.<span style="color:#9876aa;font-style:italic;">LENGTH_LONG</span>)<br> .setAction(<span style="color:#6a8759;">"Action"</span><span style="color:#cc7832;">, null</span>).show()<span style="color:#cc7832;">;<br></span><span style="color:#cc7832;"> </span>}<br> })<span style="color:#cc7832;">;<br></span><span style="color:#cc7832;"><br></span><span style="color:#cc7832;"> </span>NavigationView navigationView = (NavigationView) findViewById(R.id.<span style="color:#9876aa;font-style:italic;">nav_view</span>)<span style="color:#cc7832;">;<br></span><span style="color:#cc7832;"> </span>navigationView.setNavigationItemSelectedListener(<span style="color:#cc7832;">this</span>)<span style="color:#cc7832;">;<br></span><span style="color:#cc7832;"><br></span><span style="color:#cc7832;"> </span>FragmentManager fm = getSupportFragmentManager()<span style="color:#cc7832;">;<br></span><span style="color:#cc7832;"> </span>Fragment fragment = fm.findFragmentById(R.id.<span style="color:#9876aa;font-style:italic;">drawer_layout</span>)<span style="color:#cc7832;">;<br></span><span style="color:#cc7832;"> if</span>(fragment==<span style="color:#cc7832;">null</span>){<br> fragment = <span style="color:#cc7832;">new </span>MonthCalendarFragment()<span style="color:#cc7832;">;<br></span><span style="color:#cc7832;"> </span>fm.beginTransaction().replace(R.id.<span style="color:#9876aa;font-style:italic;">drawer_layout</span><span style="color:#cc7832;">,</span>fragment).commit()<span style="color:#cc7832;">;<br></span><span style="color:#cc7832;"> </span>}<br><br>}</pre></div> <div><br></div> <div>2. 메인 엑티비티 xml 부분</div> <div><pre style="background-color:#2b2b2b;color:#a9b7c6;font-family:'굴림체';font-size:9.6pt;"><span style="color:#e8bf6a;"><?</span><span style="color:#bababa;">xml version=</span><span style="color:#6a8759;">"1.0" </span><span style="color:#bababa;">encoding=</span><span style="color:#6a8759;">"utf-8"</span><span style="color:#e8bf6a;">?><br></span><span style="color:#e8bf6a;"><android.support.v4.widget.DrawerLayout<br></span><span style="color:#e8bf6a;"> </span><span style="color:#bababa;">xmlns:</span><span style="color:#9876aa;">android</span><span style="color:#bababa;">=</span><span style="color:#6a8759;">"<a target="_blank" href="http://schemas.android.com/apk/res/android">http://schemas.android.com/apk/res/android</a>"<br></span><span style="color:#6a8759;"> </span><span style="color:#bababa;">xmlns:</span><span style="color:#9876aa;">app</span><span style="color:#bababa;">=</span><span style="color:#6a8759;">"<a target="_blank" href="http://schemas.android.com/apk/res-auto">http://schemas.android.com/apk/res-auto</a>"<br></span><span style="color:#6a8759;"> </span><span style="color:#bababa;">xmlns:</span><span style="color:#9876aa;">tools</span><span style="color:#bababa;">=</span><span style="color:#6a8759;">"<a target="_blank" href="http://schemas.android.com/tools">http://schemas.android.com/tools</a>"<br></span><span style="color:#6a8759;"> </span><span style="color:#9876aa;">android</span><span style="color:#bababa;">:id=</span><span style="color:#6a8759;">"@+id/drawer_layout"<br></span><span style="color:#6a8759;"> </span><span style="color:#9876aa;">android</span><span style="color:#bababa;">:layout_width=</span><span style="color:#6a8759;">"match_parent"<br></span><span style="color:#6a8759;"> </span><span style="color:#9876aa;">android</span><span style="color:#bababa;">:layout_height=</span><span style="color:#6a8759;">"match_parent"<br></span><span style="color:#6a8759;"> </span><span style="color:#9876aa;">android</span><span style="color:#bababa;">:fitsSystemWindows=</span><span style="color:#6a8759;">"true"<br></span><span style="color:#6a8759;"> </span><span style="color:#9876aa;">tools</span><span style="color:#bababa;">:openDrawer=</span><span style="color:#6a8759;">"start"</span><span style="color:#e8bf6a;">><br></span><span style="color:#e8bf6a;"><br></span><span style="color:#e8bf6a;"> <include <br></span><span style="color:#e8bf6a;"> </span><span style="color:#bababa;">layout=</span><span style="color:#6a8759;">"@layout/app_bar_main"<br></span><span style="color:#6a8759;"> </span><span style="color:#9876aa;">android</span><span style="color:#bababa;">:layout_width=</span><span style="color:#6a8759;">"match_parent"<br></span><span style="color:#6a8759;"> </span><span style="color:#9876aa;">android</span><span style="color:#bababa;">:layout_height=</span><span style="color:#6a8759;">"match_parent" </span><span style="color:#e8bf6a;">/><br></span><span style="color:#e8bf6a;"><br></span><span style="color:#e8bf6a;"> <android.support.design.widget.NavigationView<br></span><span style="color:#e8bf6a;"> </span><span style="color:#9876aa;">android</span><span style="color:#bababa;">:id=</span><span style="color:#6a8759;">"@+id/nav_view"<br></span><span style="color:#6a8759;"> </span><span style="color:#9876aa;">android</span><span style="color:#bababa;">:layout_width=</span><span style="color:#6a8759;">"wrap_content"<br></span><span style="color:#6a8759;"> </span><span style="color:#9876aa;">android</span><span style="color:#bababa;">:layout_height=</span><span style="color:#6a8759;">"match_parent"<br></span><span style="color:#6a8759;"> </span><span style="color:#9876aa;">android</span><span style="color:#bababa;">:layout_gravity=</span><span style="color:#6a8759;">"start"<br></span><span style="color:#6a8759;"> </span><span style="color:#9876aa;">android</span><span style="color:#bababa;">:fitsSystemWindows=</span><span style="color:#6a8759;">"true"<br></span><span style="color:#6a8759;"> </span><span style="color:#9876aa;">app</span><span style="color:#bababa;">:headerLayout=</span><span style="color:#6a8759;">"@layout/nav_header_main"<br></span><span style="color:#6a8759;"> </span><span style="color:#9876aa;">app</span><span style="color:#bababa;">:menu=</span><span style="color:#6a8759;">"@menu/activity_main_drawer" </span><span style="color:#e8bf6a;">/><br></span><span style="color:#e8bf6a;"><br></span><span style="color:#e8bf6a;"></android.support.v4.widget.DrawerLayout><br></span></pre></div> <div><br></div> <div>3. 클릭 이벤트로 프레그먼트를 교체하는 부분</div> <div><br></div> <div><pre style="background-color:#2b2b2b;color:#a9b7c6;font-family:'굴림체';font-size:9.6pt;"><span style="color:#bbb529;">@SuppressWarnings</span>(<span style="color:#6a8759;">"StatementWithEmptyBody"</span>)<br><span style="color:#bbb529;">@Override<br></span><span style="color:#cc7832;">public boolean </span><span style="color:#ffc66d;">onNavigationItemSelected</span>(MenuItem item) {<br> Fragment fragment = <span style="color:#cc7832;">null;<br></span><span style="color:#cc7832;"><br></span><span style="color:#cc7832;"> </span><span style="color:#808080;">// Handle navigation view item clicks here.<br></span><span style="color:#808080;"> </span><span style="color:#cc7832;">int </span>id = item.getItemId()<span style="color:#cc7832;">;<br></span><span style="color:#cc7832;"><br></span><span style="color:#cc7832;"> switch </span>(id){<br><span style="color:#cc7832;">case </span>R.id.<span style="color:#9876aa;font-style:italic;">nav_camera</span>:<br> fragment = <span style="color:#cc7832;">new </span>MonthCalendarFragment()<span style="color:#cc7832;">;<br></span><span style="color:#cc7832;"> </span>Log.<span style="font-style:italic;">d</span>(<span style="color:#6a8759;">"ddd"</span><span style="color:#cc7832;">,</span><span style="color:#6a8759;">"MonthFragment"</span>)<span style="color:#cc7832;">;<br></span><span style="color:#cc7832;"> break;<br></span><span style="color:#cc7832;"> case </span>R.id.<span style="color:#9876aa;font-style:italic;">nav_gallery</span>:<br> fragment = <span style="color:#cc7832;">new </span>WeekCalendarFragment()<span style="color:#cc7832;">;<br></span><span style="color:#cc7832;"> </span>Log.<span style="font-style:italic;">d</span>(<span style="color:#6a8759;">"ddd"</span><span style="color:#cc7832;">,</span><span style="color:#6a8759;">"WeekFragment"</span>)<span style="color:#cc7832;">;<br></span><span style="color:#cc7832;"> break;</span><span style="color:#cc7832;"><br></span><span style="color:#cc7832;"> </span>}<br><br><span style="color:#cc7832;">if</span>(fragment!=<span style="color:#cc7832;">null</span>) {<br> Log.<span style="font-style:italic;">d</span>(<span style="color:#6a8759;">"ddd"</span><span style="color:#cc7832;">,</span><span style="color:#6a8759;">"setfm"</span>)<span style="color:#cc7832;">;<br></span><span style="color:#cc7832;"> </span>FragmentManager fm = getSupportFragmentManager()<span style="color:#cc7832;">;<br></span><span style="color:#cc7832;"> </span>fm.beginTransaction().replace(R.id.<span style="color:#9876aa;font-style:italic;">drawer_layout</span><span style="color:#cc7832;">, </span>fragment).commit()<span style="color:#cc7832;">;<br></span><span style="color:#cc7832;"> </span>}<br> DrawerLayout drawer = (DrawerLayout) findViewById(R.id.<span style="color:#9876aa;font-style:italic;">drawer_layout</span>)<span style="color:#cc7832;">;<br></span><span style="color:#cc7832;"> </span>drawer.closeDrawer(GravityCompat.<span style="color:#9876aa;font-style:italic;">START</span>)<span style="color:#cc7832;">;<br></span><span style="color:#cc7832;"> return true;<br></span>}</pre></div> <div><br></div> <div><br></div> <div><br></div> <div><br></div> <div><br></div> <div><br></div> <div><br></div>
댓글 분란 또는 분쟁 때문에 전체 댓글이 블라인드 처리되었습니다.