마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

액션바와 커스텀레이아웃

0 추천
@Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.main);

            ActionBar mActionBar = getActionBar();
            mActionBar.setDisplayShowHomeEnabled(false);
            mActionBar.setDisplayShowTitleEnabled(false);
            LayoutInflater mInflater = LayoutInflater.from(this);

            View mCustomView = mInflater.inflate(R.layout.actionbar, null);
            TextView mTitleTextView = (TextView) mCustomView.findViewById(R.id.title_text);
            mTitleTextView.setText("My Own Title");

            mActionBar.setCustomView(mCustomView);
            mActionBar.setDisplayShowCustomEnabled(true);

Main.java에 액션바 부분 코드구요

에러는 하나도 없는데 애뮬레이터에서 실행시키면 앱이 중지가 됩니다

왜이럴까요?

매니페스트에 뭘 추가해줘야하나요?

익명사용자 님이 2015년 5월 26일 질문
에러 로그를 올리세여....
05-26 09:58:42.763    1761-1761/com.example.administrator.lostdog E/AndroidRuntime﹕ FATAL EXCEPTION: main
     Process: com.example.administrator.lostdog, PID: 1761
     java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.administrator.lostdog/com.example.administrator.lostdog.Main}: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.app.ActionBar.setDisplayShowHomeEnabled(boolean)' on a null object reference
             at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2298)
             at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2360)
             at android.app.ActivityThread.access$800(ActivityThread.java:144)
             at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1278)
             at android.os.Handler.dispatchMessage(Handler.java:102)
             at android.os.Looper.loop(Looper.java:135)
             at android.app.ActivityThread.main(ActivityThread.java:5221)
             at java.lang.reflect.Method.invoke(Native Method)
             at java.lang.reflect.Method.invoke(Method.java:372)
             at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:899)
             at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:694)
      Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.app.ActionBar.setDisplayShowHomeEnabled(boolean)' on a null object reference
             at com.example.administrator.lostdog.Main.onCreate(Main.java:28)
             at android.app.Activity.performCreate(Activity.java:5933)
             at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1105)
             at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2251)
             at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2360)
             at android.app.ActivityThread.access$800(ActivityThread.java:144)
             at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1278)
             at android.os.Handler.dispatchMessage(Handler.java:102)
             at android.os.Looper.loop(Looper.java:135)
             at android.app.ActivityThread.main(ActivityThread.java:5221)
             at java.lang.reflect.Method.invoke(Native Method)
             at java.lang.reflect.Method.invoke(Method.java:372)
             at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:899)
             at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:694)
Getantionbar() 이부분 3줄 다 지우고 해버세요
로그를 보면널 포인트인데  mactionbar.set 여기에서 발생하네요 이유는 getActionbar()이 널을 리턴하나봅니다 지우고 해보세요
근데 그부분이 커스텀레이아웃 부분인데 지우면 없어지는거잖아요ㅠㅠ
액션바를 가져오는 부분이 널이라 setDisplayShowHomeEnabled 메소드 호출 시 널포인터 익셉션이 발생하는거 같네요. 커스텀이면 new 안해주신거 같네요.

1개의 답변

0 추천
앱이 이유없이 중지될리는 없으니 관련 에러 로그를 올려주시면 고수분들의 답변을 훨씬 수월하게 들으실거에용
컵받침 (5,500 포인트) 님이 2015년 5월 26일 답변
...