Переключение между вкладками Android с помощью намерений - PullRequest
0 голосов
/ 27 апреля 2011

Я хочу узнать, как переключаться между вкладками с помощью намерений.

В моем случае я использую обе вкладки:

Resources res = getResources();
TabHost tabHost = getTabHost();
TabHost.TabSpec spec;

// Capture tab
spec = tabHost.newTabSpec("capture").setIndicator(null,
  res.getDrawable(R.drawable.ic_tab_capture))
  .setContent(new Intent(this,CaptureActivity.class));
tabHost.addTab(spec);

// Upload tab
spec = tabHost.newTabSpec("upload").setIndicator(null,
    res.getDrawable(R.drawable.ic_tab_capture))
    .setContent(new Intent(this,ImageUpload.class));
tabHost.addTab(spec);

Чтобы упростить мою цель, мой CaptureActivity.java содержит следующий код:

public void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.capture);
  Intent intent = new Intent(this, ImageUpload.class);
  startActivityForResult(intent, 0);
}

ЧтоЯ ожидаю, что приложение должно мгновенно переключиться на вторую вкладку (активность ImageUpload), которая работает нормально, НО сами вкладки исчезают.Я получаю активность ImageUpload как отдельную страницу, а не внутри самой вкладки.

Есть идеи, что там происходит?

Ответы [ 2 ]

1 голос
/ 22 августа 2012

При первом обращении к файлу ImageUpload.java запускается только класс ImageUpload.class, но, безусловно, tabhost исчезнет.

Вам необходимо активировать функцию MainActivity-TabActivity, где вы добавили два элемента tabHost

1.ImageUpload

2.CaptureActivity

, которая будет поддерживать ваше намерение вызова TabLayout

, например,


Intent i=new Intent(getApplicationContext(),MainActivity.class)//which is your mainActivity-Launcher
i.addFlags(Intent.FLAG_ACTIVITY_BRING_TO_FRONT);
startActivity(i);//will bring MainACtivity to Front

Теперь основное действие уже запущено, поэтому указатель непосредственно переходит к onNewIntent () внутри основного действия


Переопределение onNewIntent () внутри MainActivity

=====================================

public class MainActivity extends TabActivty
{
 pubilc static TabHost tabhost;
 public void onCreate()
 {
  //where you added your two tab spec 
  //added them
 }
 public void onNewIntent(intent)
 {
   super.onNewIntent(intent);
   tabHost.setCurrentTab(1);//1-depends where you want to switch-tabIndexno, I assume Upload is at 2nd position (so "1")
  Activity currentActivity=getCurrentActivity();
           if(currentActivity instanceof Upload)
           {
               ((upload)currentActivity).onCreate();//watever method you want to call
           }
  }

}
0 голосов
/ 19 октября 2012

В родительском классе активности, где создан tabhost, я реализовал метод, подобный приведенному ниже:

public void switchTab(int tab){
        tabHost.setCurrentTab(tab);
}

Внутри вкладки, которую я хотел бы иметь возможность внутренне переключаться на другую вкладку, я создал следующий метод:

public void switchTabInActivity(int indexTabToSwitchTo){
        YOURTABHOSTACTIVITY ParentActivity;
        ParentActivity = (YOURTABHOSTACTIVITY) this.getParent();
        ParentActivity.switchTab(indexTabToSwitchTo);
}

Если вам нужен хороший пример этого кода, вы можете взглянуть на мой проект MintTrack здесь и здесь .

...