2017-02-07 11 views
0

메뉴를 클릭하면 n 개의 메뉴로 구성된 탐색 드로어가있어서 특정 단편을 여는 데 필요합니다. 처음에 나는 그것을 활동과 의도로 시도했다. 단편을 사용하는 경우에는보기가 좋지 않습니다. 나는 그들을 ID로 선택하고 활동에서 프래그먼트를 호출한다. 조각에서, 그것은 포인터가 예외를 던지고있다 원형 차트를 사용하고 있습니다. 그것은보기를 만들 때부터 Oncreate보기 후에 instanciated 이후 변경 시도했다. 결과는 없습니다.탐색 드로어에서 단편 호출하기

+0

보기를 추가 했습니까? –

답변

0

다음은 이해를 돕는 샘플 코드입니다. 먼저 한 OnCreate()에서 단편으로 activity_main.xml 내용을 대체 하기 :

FragmentManager fm = getFragmentManager(); 
     fm.beginTransaction().replace(R.id.content_frame, new HomeFragment()).commit(); 

그런 다음 onNavigationItemSelected에서 다른 사람이 HomeFragment() 대체 :

@Override 
    public boolean onNavigationItemSelected(MenuItem item) { 
    // Handle navigation view item clicks here. 
    int id = item.getItemId(); 

    if (id == R.id.nav_home) { 
     // Handle the camera action 
     FragmentManager fm = getFragmentManager(); 
     fm.beginTransaction().replace(R.id.content_frame, new HomeFragment()).commit(); 
    } else if (id == R.id.nav_current_order) { 
     FragmentManager fm = getFragmentManager(); 
     fm.beginTransaction().replace(R.id.content_frame, new MyCurrentOrderFragment(),"Tag").commit(); 
    } else if (id == R.id.nav_received_images) { 
     FragmentManager fm = getFragmentManager(); 
     fm.beginTransaction().replace(R.id.content_frame, new HistoryFragment()).commit(); 
    } else if (id == R.id.nav_rate_app) { 
     FragmentManager fm = getFragmentManager(); 
     fm.beginTransaction().replace(R.id.content_frame, new RateOurAppFragment()).commit(); 
    } else if (id == R.id.nav_help) { 
     FragmentManager fm = getFragmentManager(); 
     fm.beginTransaction().replace(R.id.content_frame, new HelpFragment()).commit(); 
    } else if (id == R.id.nav_settings) { 
     FragmentManager fm = getFragmentManager(); 
     fm.beginTransaction().replace(R.id.content_frame, new SettingsFragment()).commit(); 
    } 

    DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout); 
    drawer.closeDrawer(GravityCompat.START); 
    return true; 
} 

당신의 content_main.xml에 FrameLayout이 추가 및 id를 "content_frame"으로 설정하십시오.

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:app="http://schemas.android.com/apk/res-auto" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:paddingBottom="@dimen/activity_vertical_margin" 
    android:paddingLeft="@dimen/activity_horizontal_margin" 
    android:paddingRight="@dimen/activity_horizontal_margin" 
    android:paddingTop="@dimen/activity_vertical_margin" 
    app:layout_behavior="@string/appbar_scrolling_view_behavior" 
    tools:context="bd.com.chalo.dsstudio.MainActivity" 
    tools:showIn="@layout/app_bar_main"> 

<TextView 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:text="Hello World!" 
    android:visibility="gone" /> 
<FrameLayout 
    android:id="@+id/content_frame" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent"></FrameLayout> 

</RelativeLayout> 
+0

고마워요, Fragment로 전환하는 중입니다. 그냥 그럴 것 같네요.이 라인에서 포인터 예외가 있습니다. pieChart1 = (PieChart) getView(). findViewById (R.id.piechart1); pieChart2 = (PieChart) getView(). findViewById (R.id.piechart2); ' –

+0

어떤 줄에 있습니까? 내 대답이 도움이됩니까? 그럴 경우 승인 된 것으로 표시하십시오. :) – tahsinRupam

+0

fm.beginTransaction(). replace (R.id.content_frame, 새 SettingsFragment()) .commit(); 이 줄에서 우리는 레이아웃을 제공해야하는 content_frame에서 레이아웃을 추가 할 수 없습니다. –

관련 문제