Android tabhost在空白屏幕中打开

时间:2013-11-03 17:45:06

标签: c# android asp.net android-activity

我在项目中使用tabhost

现在当我点击Tab 1时出现以下问题 它启动Tab 1的新活动,这是正确的,它加载我的列表视图 也很完美但是当我点击listview项目时,它应该也开始一个新的活动 但它在空白屏幕中打开,而不是在tabhost / framelayout

这是我的代码示例,我希望你能建议我非常感谢

Listview活动/标签1

[Activity(Label = "Pagina")]
public class Paginas : Activity
{
    ListView listView;
    CMS.APPS CMS = new CMS.APPS();
    List<CMS.Pages> ListPages;

    protected override void OnCreate(Bundle bundle)
    {
        base.OnCreate(bundle);
        Core.Context = this;

        SetContentView(Resource.Layout.Paginas);
        ListPages = CMS.GetPagesAndroid(Core.AdministratieID, null, Core.UserID, null, null, null, null, null, null, null, null).ToList();

        listView = FindViewById<ListView>(Resource.Id.ListViewPaginas);
        listView.Adapter = new PagesAdapter(this, ListPages);
        listView.ChoiceMode = ChoiceMode.Single;
        listView.ItemClick += OnListItemClick;
    }

    protected void OnListItemClick(object sender, Android.Widget.AdapterView.ItemClickEventArgs e)
    {
        var listView = sender as ListView;
        var t = ListPages[e.Position];
        var CMSPage = new Intent(this, typeof(Handler));
        CMSPage.PutExtra("PAG_ID", t.PAG_ID.ToString());
        StartActivity(CMSPage);
        //Android.Widget.Toast.MakeText(this, t.PAG_TITLE, Android.Widget.ToastLength.Short).Show();
    }
}

我现在所做的是启动一个新的活动CMSPage typeof Handler 它让我一个空白的屏幕,而不是打开它代替Pagina的/ Tab 1

编辑:主屏幕上的Tabhost代码:

  protected override void OnCreate(Bundle bundle)
    {
        base.OnCreate(bundle);
        SetContentView(Resource.Layout.Homescreen);
        Core.Context = this;

        CreateTab(typeof(Paginas), "Pagina's", "Pagina's", Resource.Drawable._Pagina);
        CreateTab(typeof(Profiel), "Profiel", "Profiel", Resource.Drawable._Profiel);

    }

    private void CreateTab(Type activityType, string tag, string label, int? drawableId = null)
    {
        var intent = new Intent(this, activityType);
        intent.AddFlags(ActivityFlags.NewTask);
        var spec = TabHost.NewTabSpec(tag);

        if (drawableId > 0)
        {
            var drawableIcon = Resources.GetDrawable(drawableId.Value);
            spec.SetIndicator(label, drawableIcon);
        }
        else
        {
            spec.SetIndicator(label, null);
        }

        spec.SetContent(intent);
        TabHost.AddTab(spec);
    }

1 个答案:

答案 0 :(得分:1)

这是我非常肯定会工作的一个粗略的例子(即没有经过测试,但我在自己的代码中做了类似的事情)。

在TabActivity中存在的Activity中

var parent = this.Parent as TabContainer;
if (parent != null)
{
    parent.ChangeToTab(tabId);
}

在TabActivity中:

    public void ChangeToTab(int tabId)
    {
        TabHost.CurrentTab = tabId;
    }

当您创建TabHost时,需要为您要更改的标签加载一个标签。