2013-03-06 4 views
1

У меня есть экран с двумя вкладками в нижней части экрана. После запуска приложения автоматически будет активирована первая вкладка, и будет показана активность, связанная с этим экраном (Экран 1). Затем, когда пользователь нажимает на вторую вкладку, открывается другое действие (Экран 2).Вкладка Действие первого экрана независимо от вкладки

Требование: я хочу показать экран 0, когда приложение загружается вместо отображения экрана 1. В это время обе вкладки должны быть неактивными (не нажатыми). Как только пользователь нажимает на любую вкладку, должны открываться только соответствующие экраны (Экран 1 и экран 2).

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

код я приведен ниже:

public class TabBarActivity extends TabActivity { 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 

     super.onCreate(savedInstanceState); 
     requestWindowFeature(Window.FEATURE_NO_TITLE); 
     setContentView(R.layout.main); 

     // Your Tab Titles 
     String tab_title[] = { "Screen 1", "Screen 2"}; 

     // Your Tab Drawables for their states 
     int tab_drawables[] = { R.drawable.tab_home_custom, 
       R.drawable.tab_balance_custom}; 

     // Your Tab Activities 
     Object tab_act[] = { TabB.class,TabC.class}; 

     ///TabHost setup 
     final TabHost tabHost = (TabHost) findViewById(android.R.id.tabhost); 
     tabHost.setup(); 

     TabSpec tab_spec ; 

     for (int i = 0; i < tab_act.length; i++) { 

       tab_spec = tabHost.newTabSpec(tab_title[i]); 
       tab_spec.setIndicator(tab_title[i], 
         getResources().getDrawable(tab_drawables[i])); 
       tab_spec.setContent(new Intent(this, (Class<?>) tab_act[i])); 
       tabHost.addTab(tab_spec); 

     } 
     tabHost.setCurrentTab(0); 
    } 

    @Override 
    public boolean onKeyDown(int keyCode, KeyEvent event) { 
     if (keyCode == KeyEvent.KEYCODE_BACK) { 
      TabBarActivity.this.finish(); 
      return true; 
     } 
     return super.onKeyDown(keyCode, event); 
    } 
} 

Screen Shot

ответ

0

Просто создать новый вид деятельности, экран 0, и получить его, чтобы начать свои вкладки активности, экран 1 и экран 2, с помощью намерения , Затем вы можете изменить файл манифеста, чтобы новый вид активности был помечен как пусковая установка, добавив этот код в объявление активности.

<intent-filter> 
    <action android:name="android.intent.action.MAIN"/> 
    <category android:name="android.intent.category.LAUNCHER"/> 
</intent-filter> 

Вам также необходимо удалить этот код из текущей активности табуляции.

0

Это не то, что обычно поддерживает TabActivity.

Вы можете быть в состоянии достичь желаемого эффекта, добавляя вкладку «фиктивный»:

public class TabBarActivity extends TabActivity { 

@Override 
public void onCreate(Bundle savedInstanceState) { 

    super.onCreate(savedInstanceState); 
    requestWindowFeature(Window.FEATURE_NO_TITLE); 
    setContentView(R.layout.main); 

    // Your Tab Titles 
    String tab_title[] = { "", "Screen 1", "Screen 2"}; 

    // Your Tab Drawables for their states 
    int tab_drawables[] = { R.drawable.tab_home_custom, 
      R.drawable.tab_balance_custom}; 

    // Your Tab Activities 
    Object tab_act[] = {Activity.class, TabB.class,TabC.class}; 

    ///TabHost setup 
    final TabHost tabHost = (TabHost) findViewById(android.R.id.tabhost); 
    tabHost.setup(); 

    TabSpec tab_spec ; 

    for (int i = 0; i < tab_act.length; i++) { 

      tab_spec = tabHost.newTabSpec(tab_title[i]); 
      if(i>0) tab_spec.setIndicator(tab_title[i], 
        getResources().getDrawable(tab_drawables[i])); 
      tab_spec.setContent(new Intent(this, (Class<?>) tab_act[i])); 
      tabHost.addTab(tab_spec); 

    } 
    tabHost.setCurrentTab(0); 
} 

@Override 
public boolean onKeyDown(int keyCode, KeyEvent event) { 
    if (keyCode == KeyEvent.KEYCODE_BACK) { 
     TabBarActivity.this.finish(); 
     return true; 
    } 
    return super.onKeyDown(keyCode, event); 
} 

}

я не уверен, если это создаст пустую кнопку вкладки в панели вкладок хотя

+0

Это не работает для меня. – MidhunVP

0

Я полагаю, вы хотите экранную заставку с логотипом приложения, вам нужно создать другую деятельность и перейти к tabActivity из этого

public class splash2 extends Activity{ 


    protected boolean _active = true; 
    protected int _splashTime = 2000; 
    Intent intent; 
    Runnable r; 
    Handler handler; 
    /** Called when the activity is first created. */ 

    @Override 
    public boolean onKeyDown(int keyCode, KeyEvent event) { 
     if (keyCode == KeyEvent.KEYCODE_MENU) { 
      getWindow().setSoftInputMode(
        WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN); 
      return true; 
     } 
     return super.onKeyDown(keyCode, event); 
    } 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.splashlayout2); 

     // startActivity(new Intent(splash2.this,splash1.class)); 
     // thread for displaying the SplashScreen 

     handler = new Handler(); 

     r=new Runnable() { 
      public void run() { 

       intent = new Intent(splash2.this, TabBarActivity .class); 
       //intent.setClass(); 
       startActivity(intent); 

       finish(); 
      } 

     }; 
     handler.postDelayed(r, _splashTime); 

    } 

    @Override 
    public boolean onTouchEvent(MotionEvent event) { 
     if (event.getAction() == MotionEvent.ACTION_DOWN) { 
      handler.removeCallbacks(r); 
      intent = new Intent(); 
      intent.setClass(splash2.this, Main_menu.class); 
      startActivity(intent); 
      overridePendingTransition(R.anim.slide_in_left2, R.anim.slide_out_left2); 
      finish(); 
     } 
     return true; 
    } 

    @Override 
    public void onBackPressed() { 
     // TODO Auto-generated method stub 

    } 
} 

и добавьте следующий тег в тег активности этой деятельности вместо того, чтобы эти теги внутри TabBarActivity

<intent-filter> 
    <action android:name="android.intent.action.MAIN"/> 
    <category android:name="android.intent.category.LAUNCHER"/> 
</intent-filter> 

Это сделает этот экран выплеска активности по умолчанию

+0

Я добираюсь до экрана tabactivity только с другого экрана входа. В таком случае, что я могу сделать? – MidhunVP

+0

вы можете опубликовать скриншот того, что вы точно хотите –

+0

Я добавил снимок экрана, отредактировав вопрос. Когда приложение достигнет этого конкретного экрана, оно должно показать экран 0. Как только пользователь нажимает на первую вкладку, он должен показывать экран 1. – MidhunVP

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