1

Я разрабатываю приложение в Android 4. У меня есть три tabs в моем приложении. В чем заключается мое требование, я хочу показать только первую вкладку в начале, и после нажатия на какую-то кнопку из вкладки 1, я хочу показать вторую вкладку, после нажатия на кнопку будет видна 3-я вкладка.Как скрыть отдельную вкладку из ActionBar в Android 4

Как Вкладки Android 3 на приходах, не имеет setVisibility метод, пожалуйста, скажите мне, как show/hideparticular tab в моем случае.

Любая помощь будет оценена по достоинству.

спасибо.

UPDATE: OnClick кнопки, я добавил этот код:

ActionBar actionbar = getActivity().getActionBar(); 
       ActionBar.Tab Tab2 = actionbar.newTab().setText("XYZ"); 
       ActionBar.Tab Tab3 = actionbar.newTab().setText("PQR"); 

       Fragment Tab2Fragment = new BFragment(); 
       Fragment Tab3Fragment = new CFragment(); 

       Tab2.setTabListener(new MyTabsListener(Tab2Fragment)); 
       Tab3.setTabListener(new MyTabsListener(Tab3Fragment)); 
       actionbar.addTab(Tab2); 
       actionbar.addTab(Tab3); 

Но до сих пор ее не работает ..

UPDATE: Теперь я могу видеть две вкладки приходят, но я подвожу NPE:

06-08 20:57:58.101: E/AndroidRuntime(17070): java.lang.NullPointerException 

06-08 20:57:58.101: E/AndroidRuntime(17070): at de.arvidg.exampleactionbartabs.AFragment.onActivityCreated(AFragment.java:116) 
06-08 20:57:58.101: E/AndroidRuntime(17070): at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:847) 
06-08 20:57:58.101: E/AndroidRuntime(17070): at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:1032) 
06-08 20:57:58.101: E/AndroidRuntime(17070): at android.app.BackStackRecord.run(BackStackRecord.java:622) 
06-08 20:57:58.101: E/AndroidRuntime(17070): at android.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1382) 
06-08 20:57:58.101: E/AndroidRuntime(17070): at android.app.FragmentManagerImpl$1.run(FragmentManager.java:426) 
06-08 20:57:58.101: E/AndroidRuntime(17070): at android.os.Handler.handleCallback(Handler.java:605) 
06-08 20:57:58.101: E/AndroidRuntime(17070): at android.os.Handler.dispatchMessage(Handler.java:92) 
06-08 20:57:58.101: E/AndroidRuntime(17070): at android.os.Looper.loop(Looper.java:137) 
06-08 20:57:58.101: E/AndroidRuntime(17070): at android.app.ActivityThread.main(ActivityThread.java:4424) 
06-08 20:57:58.101: E/AndroidRuntime(17070): at java.lang.reflect.Method.invokeNative(Native Method) 
06-08 20:57:58.101: E/AndroidRuntime(17070): at java.lang.reflect.Method.invoke(Method.java:511) 
06-08 20:57:58.101: E/AndroidRuntime(17070): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784) 
06-08 20:57:58.101: E/AndroidRuntime(17070): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551) 
06-08 20:57:58.101: E/AndroidRuntime(17070): at dalvik.system.NativeStart.main(Native Method) 

Это мой onCreateView и onActivityCreated в AFragment являются:

@Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
      Bundle savedInstanceState) { 
     // Inflate the layout for this fragment 
     return inflater.inflate(R.layout.afragment, container, false); 
    } 

/* (non-Javadoc) 
    * @see android.app.Fragment#onActivityCreated(android.os.Bundle) 
    */ 
    @Override 
    public void onActivityCreated(Bundle savedInstanceState) { 
     super.onActivityCreated(savedInstanceState); 
     appContext = AFragment.this; 
     mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter(); 
     if (mBluetoothAdapter == null) { 
      Toast.makeText(getActivity(), "NO Bluetooth Available", Toast.LENGTH_LONG); 
      getActivity().finish(); 
      return; 
     } 
     final Button connectBtn = (Button) getActivity().findViewById(R.id.connect_btn); 
     connectBtn.setClickable(true); // NPE is occurring here... 
} 
+0

ActionBar.Tab Tab2 = actionBar.newTab(); , затем вызовите Tab2.setText («XYZ») и actionbar.addTab (Tab2); – CSmith

ответ

1

использование ActionBar.addTab(), чтобы добавить вкладки, ActionBar.removeTabAt(), чтобы удалить вкладку. Кроме того, ActionBar.getTabCount() может использоваться для определения текущего количества настроенных вкладок.

ActionBar actionBar = this.getActionBar(); 
if (actionBar.getTabCount() == 1) 
{ 
// 2nd tab 
MyFragment fragment = new MyFragment(); 
ActionBar.Tab tab2nd = actionBar.newTab(); 
tab2nd.setTabListener(fragment); 
actionBar.addTab(tab2nd); 
} 
+0

Спасибо. Позвольте мне проверить. – Shrikant

+0

Не работает. Пожалуйста, ознакомьтесь с моим обновленным вопросом .. – Shrikant

+0

См. Мой обновленный вопрос – Shrikant

1

Вы можете использовать метод removeTab(ActionBar.Tab tab) в ActionBar в:

bar.removeTab(tab); 

Чтобы добавить закладку назад, вызовите addTab(ActionBar.Tab tab, int position), при условии, что вы сохранили позицию Tab вы удалили. Например,

bar.addTab(tab, savedTabPosition); 
+0

См. Мой обновленный вопрос – Shrikant

+0

Немного странно, что вы пытаетесь манипулировать представлениями в своей деятельности из своего АФРЕМанта. Зачем ты это делаешь? –

+0

Ох! как глупо!!! Спасибо. Это решило мою проблему. Я переместил весь код из onActivityCreated в свою деятельность. – Shrikant

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