【问题标题】:Multiple Activities in Single Tab Android单标签 Android 中的多个活动
【发布时间】:2012-09-04 07:31:57
【问题描述】:

在我的应用程序中,我试图使用意图从选项卡中的按钮打开一个活动。但是,新活动不是在同一个选项卡中打开,而是覆盖整个屏幕,并且这些选项卡不可见。如何在同一个选项卡中打开多个活动。

以下代码属于我的主类:

@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);
}

以下是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();
    }
}
}

TabGroup1Activity 的代码 TabGroup2Activity 也有相同的代码:

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

TestClass 活动的代码:

public class TestClass extends Activity {

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

请帮我解决我的问题..

提前谢谢...

【问题讨论】:

    标签: android android-intent tabs android-activity


    【解决方案1】:

    【讨论】:

    • 我已经阅读了那篇文章,但它让我感到困惑,这就是我在这里发帖的原因......
    • 你需要先了解片段的概念,然后你才能轻松使用它..例子太多了
    • 您可以在标签中使用片段,使用按钮可以隐藏片段以及如何隐藏其他片段。
    • 你能为我提供一个简单的标签教程吗?我从以下链接在这里发布的代码:ericharlow.blogspot.in/2010/09/… 当我运行该应用程序时它运行良好而没有错误但是当我尝试修改简单教程的代码然后我的应用程序崩溃..我只想知道我做错了什么...因为我的代码中没有错误..但是当我尝试运行我的应用程序时会强制关闭。但是当我从上面的链接运行实际代码时,它运行良好......
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-06-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多