2012-09-04 2 views
0

Dans mon application, j'essaie d'ouvrir une activité à partir d'un bouton dans un onglet en utilisant l'intention. Mais au lieu d'ouvrir dans le même onglet la nouvelle activité couvre tout l'écran et les onglets ne sont pas visibles. Comment puis-je ouvrir plus d'une activité dans le même onglet ..Plusieurs activités dans un seul onglet Android

Le code suivant est de ma classe principale :

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 

    TabHost tabHost = getTabHost(); 
    tabHost.addTab(tabHost.newTabSpec("tab1").setIndicator("OPT").setContent(new Intent(this, TabGroup1Activity.class))); 
    tabHost.addTab(tabHost.newTabSpec("tab2").setIndicator("EDIT").setContent(new Intent(this, TabGroup2Activity.class))); 
    tabHost.setCurrentTab(1); 
} 

Ce qui suit est le code de TabGroupActivity:

public class TabGroupActivity extends ActivityGroup{ 

ArrayList<String> list; 
Window window; 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
    // TODO Auto-generated method stub 
    super.onCreate(savedInstanceState); 

    if(list.equals(null)) 
    { 
     list = new ArrayList<String>(); 
    } 
} 

@Override 
public void finishFromChild(Activity child) 
{ 
    LocalActivityManager manager = getLocalActivityManager(); 
    int index = list.size() -1; 
    if(index < 1) 
    { 
     finish(); 
     return; 
    } 
    manager.destroyActivity(list.get(index), true); 
    list.remove(index); 
    index--; 
    String lastId = list.get(index); 
    Intent in = manager.getActivity(lastId).getIntent(); 
    window = manager.startActivity(lastId, in); 
    setContentView(window.getDecorView()); 
} 

public void startChildActivity(String Id, Intent intent) 
{ 
    window = getLocalActivityManager().startActivity(Id, intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP)); 
    if(window != null) 
    { 
     list.add(Id); 
     setContentView(window.getDecorView()); 
    } 
} 

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

@Override 
public boolean onKeyUp(int keyCode, KeyEvent event) 
{ 
    if(keyCode == KeyEvent.KEYCODE_BACK) 
    { 
     onBackPressed(); 
     return true; 
    } 
    return super.onKeyUp(keyCode, event); 
} 

@Override 
public void onBackPressed() 
{ 
    int length = list.size(); 
    if(length > 1) 
    { 
     Activity current = getLocalActivityManager().getActivity(list.get(length - 1)); 
     current.finish(); 
    } 
} 
} 

le code pour le TabGroup1Activity TabGroup2Activity également avoir le même code:

public class TabGroup1Activity extends TabGroupActivity{ 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    startChildActivity("TestClass", new Intent(this,TestClass.class)); 
} 
} 

Code pour l'activité TestClass:

public class TestClass extends Activity { 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    // TODO Auto-generated method stub 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.newview); 
} 
} 

S'il vous plaît aidez-moi est de résoudre mon problème ..

Merci à l'avance ...

Répondre

Questions connexes