2013-06-23 3 views
0

내 애플 리케이션에 탐색 서랍을 구현하고 있는데 글꼴을 변경하고 싶습니다. 나는 응용 프로그램이 즉시 충돌 실행하고 내가 잘못이 무엇인지 파악하지 못할 때 문제가 탐색 서랍의 글꼴을 변경하는 곳 바로 아래 내에서 OnCreate 방법이다안드로이드 - 내비게이션 서랍/텍스트의 글꼴 변경

코드 : 여기

public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.navdrawer); 

    android.support.v4.app.FragmentManager fragmentManager = getSupportFragmentManager(); 
    android.support.v4.app.FragmentTransaction fragmentTransaction = fragmentManager 
      .beginTransaction(); 
    Home fragment = new Home(); 
    fragmentTransaction.replace(R.id.llhome, fragment); 
    fragmentTransaction.commit(); 

    Typeface tf = Typeface.createFromAsset(getAssets(), 
      "robotomed.ttf"); 
    TextView tv = (TextView) findViewById(R.id.tvmenu); 
    tv.setTypeface(tf); 

    mPlanetTitles = getResources().getStringArray(R.array.planets_array); 
    mDrawerList = (ListView) findViewById(R.id.left_drawer); 

    mDrawerList.setAdapter(new ArrayAdapter<String>(this, 
      R.layout.drawer_list_item, mPlanetTitles)); 
    // Set the list's click listener 

    mDrawerList.setOnItemClickListener(new DrawerItemClickListener()); 

    mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout); 
    mDrawerToggle = new ActionBarDrawerToggle(this, /* host Activity */ 
    mDrawerLayout, /* DrawerLayout object */ 
    R.drawable.ic_drawer, /* nav drawer icon to replace 'Up' caret */ 
    R.string.drawer_open, /* "open drawer" description */ 
    R.string.drawer_close /* "close drawer" description */ 
    ) { 

     /** Called when a drawer has settled in a completely closed state. */ 
     public void onDrawerClosed(View view) { 
      getActionBar().setTitle("Home"); 
     } 

     /** Called when a drawer has settled in a completely open state. */ 
     public void onDrawerOpened(View drawerView) { 
      getActionBar().setTitle("StayHealthy"); 
     } 
    }; 

    // Set the drawer toggle as the DrawerListener 
    mDrawerLayout.setDrawerListener(mDrawerToggle); 

    getActionBar().setDisplayHomeAsUpEnabled(true); 
    getActionBar().setHomeButtonEnabled(true); 



} 

내 로그 캣

입니다
06-22 21:44:21.562: E/AndroidRuntime(32042): FATAL EXCEPTION: main 
06-22 21:44:21.562: E/AndroidRuntime(32042): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.OptimusApps.stayhealthy/com.OptimusApps.stayhealthy.MainActivity}: java.lang.NullPointerException 
06-22 21:44:21.562: E/AndroidRuntime(32042): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2079) 
06-22 21:44:21.562: E/AndroidRuntime(32042): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2104) 
06-22 21:44:21.562: E/AndroidRuntime(32042): at android.app.ActivityThread.access$600(ActivityThread.java:132) 
06-22 21:44:21.562: E/AndroidRuntime(32042): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1157) 
06-22 21:44:21.562: E/AndroidRuntime(32042): at android.os.Handler.dispatchMessage(Handler.java:99) 
06-22 21:44:21.562: E/AndroidRuntime(32042): at android.os.Looper.loop(Looper.java:137) 
06-22 21:44:21.562: E/AndroidRuntime(32042): at android.app.ActivityThread.main(ActivityThread.java:4575) 
06-22 21:44:21.562: E/AndroidRuntime(32042): at java.lang.reflect.Method.invokeNative(Native Method) 
06-22 21:44:21.562: E/AndroidRuntime(32042): at java.lang.reflect.Method.invoke(Method.java:511) 
06-22 21:44:21.562: E/AndroidRuntime(32042): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:789) 
06-22 21:44:21.562: E/AndroidRuntime(32042): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:556) 
06-22 21:44:21.562: E/AndroidRuntime(32042): at dalvik.system.NativeStart.main(Native Method) 
06-22 21:44:21.562: E/AndroidRuntime(32042): Caused by: java.lang.NullPointerException 
06-22 21:44:21.562: E/AndroidRuntime(32042): at com.OptimusApps.stayhealthy.MainActivity.onCreate(MainActivity.java:40) 
06-22 21:44:21.562: E/AndroidRuntime(32042): at android.app.Activity.performCreate(Activity.java:4465) 
06-22 21:44:21.562: E/AndroidRuntime(32042): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1049) 
06-22 21:44:21.562: E/AndroidRuntime(32042): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2033) 
06-22 21:44:21.562: E/AndroidRuntime(32042): ... 11 more 

답변

0

logcat에서 NullPointerException이 발견되어 서체가 올바르게로드되지 않았을 가능성이 큽니다. robotomed.tff이 실제로 프로젝트의 /assets에 있음을 확인할 수 있습니까?

자산에 대한 자세한 내용은 here을 확인하십시오.

0
Typeface tf = Typeface.createFromAsset(getBaseContext().getAssets(), 
      "fonts/robotomed.ttf"); 

// getBaseContext()는 내가 자산 폴더를 만들고 그 안에 폰트 디렉토리를 추가하는 것이 좋습니다 MainActivity.this

로 같은 일이다. 액티비티의 assets 폴더와 글꼴 디렉토리의 글꼴을 호출합니다. 또한 XML 파일의 구조에 따라 findViewById()를 사용하지 못할 수도 있습니다. 그 이유는 TextView가 ListAdapter (생각 목록 항목)의 일부일 수 있기 때문입니다. 즉, Id가 ListAdapter에 적용되면 Id를 호출 할 수 없습니다.

관련 문제