2014-12-05 3 views
3

Я пытаюсь скрыть панель действий в фрагменте. Для этого я пытаюсь использовать getActivity().getActionBar().hide();, но выдает исключение NullPointerException. Я попытался использовать getSupportActionBar(), но Eclipse не отображает автозаполнение, оно отображается только getActionBar();Скрыть панель действий в фрагменте броска NullPointerException?

Как это сделать?

Фрагмент

public class MyFragment extends Fragment { 
@Override 
     public void onCreate(Bundle savedInstanceState) {   
      super.onCreate(savedInstanceState); 
      getActivity().getActionBar().hide(); //nullpointerexception in this line  
     } 
} 

Исключение:

12-05 12:19:02.415: E/AndroidRuntime(16400): FATAL EXCEPTION: main 
12-05 12:19:02.415: E/AndroidRuntime(16400): java.lang.NullPointerException 
12-05 12:19:02.415: E/AndroidRuntime(16400): at br.com.mypackage.myapp.frags.BatalhaSemOponenteFrag.onCreate(BatalhaSemOponenteFrag.java:71) 
12-05 12:19:02.415: E/AndroidRuntime(16400): at android.support.v4.app.Fragment.performCreate(Fragment.java:1763) 
12-05 12:19:02.415: E/AndroidRuntime(16400): at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:913) 
12-05 12:19:02.415: E/AndroidRuntime(16400): at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1126) 
12-05 12:19:02.415: E/AndroidRuntime(16400): at android.support.v4.app.BackStackRecord.run(BackStackRecord.java:739) 
12-05 12:19:02.415: E/AndroidRuntime(16400): at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1489) 
12-05 12:19:02.415: E/AndroidRuntime(16400): at android.support.v4.app.FragmentManagerImpl$1.run(FragmentManager.java:454) 
12-05 12:19:02.415: E/AndroidRuntime(16400): at android.os.Handler.handleCallback(Handler.java:730) 
12-05 12:19:02.415: E/AndroidRuntime(16400): at android.os.Handler.dispatchMessage(Handler.java:92) 
12-05 12:19:02.415: E/AndroidRuntime(16400): at android.os.Looper.loop(Looper.java:176) 
12-05 12:19:02.415: E/AndroidRuntime(16400): at android.app.ActivityThread.main(ActivityThread.java:5419) 
12-05 12:19:02.415: E/AndroidRuntime(16400): at java.lang.reflect.Method.invokeNative(Native Method) 
12-05 12:19:02.415: E/AndroidRuntime(16400): at java.lang.reflect.Method.invoke(Method.java:525) 
12-05 12:19:02.415: E/AndroidRuntime(16400): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1046) 
12-05 12:19:02.415: E/AndroidRuntime(16400): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:862) 
12-05 12:19:02.415: E/AndroidRuntime(16400): at dalvik.system.NativeStart.main(Native Method) 
+0

вы используете AppCompat? – Blackbelt

+0

попытайтесь скрыть это в 'onActivityCreated' –

+0

@Blackbelt yep, я использую appcompat_v7 – FernandoPaiva

ответ

7

Поскольку вы используете Фрагмент поддержки V4, я предполагаю, что вы будете использовать appcompat для своей деятельности.
Необходимо передать действие, которое вы получаете из getActivity(), в свою действительную активность, чтобы оно распознало активность как appcompat.

Попробуйте это:

public class MyFragment extends Fragment { 
@Override 
    public void onCreate(Bundle savedInstanceState) {   
     super.onCreate(savedInstanceState); 
((YourActivity)getActivity()).getSupportActionBar().hide(); 
    } 
} 
+0

works..thanks a много! – FernandoPaiva

+0

ты здравствуй –

0

Что такое минимальная SDK? Вы можете изменить его на 11, только для целей тестирования.

Вы звоните по телефону setContentView по вашей деятельности onCreate?

Если вы используете appcompat, вам необходимо позвонить по номеру getSupportActionbar().

Вы также можете добавить requestWindowFeature(Window.FEATURE_ACTION_BAR); перед вызовом setContentView

Определили ли вы Theme.NoTitle или windowActionBar, как ложное в вашем styles.xml?

Проверьте, является ли ActionBar нулевым в активности.

Смежные вопросы