如何在TabHost中显示徽章

时间:2014-02-18 08:46:50

标签: android android-tabhost google-cloud-messaging badge

这是我的 MainActivity.java:

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main_activity);

    Resources ressources = getResources();
    TabHost tabHost = getTabHost();

    registerReceiver(myBroadcastReceiver1, new IntentFilter(
            MYBROADCAST_INTENTFILTER));

Intent intentFriends = new Intent().setClass(this,
                TabFriendsActivity.class).addFlags(
                Intent.FLAG_ACTIVITY_CLEAR_TOP);

        TabSpec tabFriends = tabHost
                .newTabSpec("Friends")
                .setIndicator("",
                        ressources.getDrawable(R.drawable.btn_tab_friends))
                .setContent(intentFriends);

        // Talks tab
        Intent intentTalks = new Intent()
                .setClass(this, TabTalksActivity.class).addFlags(
                        Intent.FLAG_ACTIVITY_CLEAR_TOP);
        TabSpec tabTalks = tabHost
                .newTabSpec("Talks")
                .setIndicator("",
                        ressources.getDrawable(R.drawable.btn_tab_talk))
                .setContent(intentTalks);

        // Add friends tab
        Intent intentAddFriends = new Intent().setClass(this,
                TabAddFriendsActivity.class).addFlags(
                Intent.FLAG_ACTIVITY_CLEAR_TOP);
        TabSpec tabAddFriends = tabHost
                .newTabSpec("Add friends")
                .setIndicator("",
                        ressources.getDrawable(R.drawable.btn_tab_addfriend))
                .setContent(intentAddFriends);

        // Other tab
        Intent intentOther = new Intent()
                .setClass(this, TabOtherActivity.class).addFlags(
                        Intent.FLAG_ACTIVITY_CLEAR_TOP);
        TabSpec tabSpecOther = tabHost
                .newTabSpec("Other")
                .setIndicator("",
                        ressources.getDrawable(R.drawable.btn_tab_other))
                .setContent(intentOther);

        // add all tabs
        tabHost.addTab(tabFriends);
        tabHost.addTab(tabTalks);
        tabHost.addTab(tabAddFriends);
        tabHost.addTab(tabSpecOther);

        // set Windows tab as default (zero based)
        tabHost.setCurrentTab(0);

        TabWidget tabs = (TabWidget) findViewById(android.R.id.tabs);
        badge = new BadgeView(this, tabs, 1);
        badge.setText("new");

    }

当我从GCM收到来自BroadcastReceiver的邮件时,我想在tabTalks中显示文字“new”。我尝试调试并获得“intentChatting”的信息,这意味着BroadcastReceiver正在工作,但文本“new”未显示在tabTalks图标中。

private BroadcastReceiver myBroadcastReceiver1 = new BroadcastReceiver() {
        @Override
        public void onReceive(Context context, Intent intent) {
            String intentChatting = intent.getExtras().get("Intent").toString();
            if (intentChatting != null) {
                pushBadge(intentChatting);
            }

        }
    };

    private void pushBadge(String intentChating) {
        badge.show();
    }

这是我的 main_activity.xml:

<?xml version="1.0" encoding="utf-8"?>
<TabHost xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@android:id/tabhost"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:background="#f2f2f2">

    <LinearLayout
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:orientation="vertical" >

        <FrameLayout
            android:id="@android:id/tabcontent"
            android:layout_width="fill_parent"
            android:layout_height="462dp"
            android:layout_weight="0.07">
        </FrameLayout>

        <TabWidget
            android:id="@android:id/tabs"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:background="#000" />
    </LinearLayout>

</TabHost>

那么,我的代码有什么问题。我想通过GCM BroadcastReceiver收到来自{{1}}的收件人消息,在tabhost中显示徽章。但它不起作用!

任何帮助非常感谢!感谢。

0 个答案:

没有答案
相关问题