setCurrentiTem Android

时间:2011-02-16 08:28:13

标签: android

我在我的主屏幕上有4个标签,

main(设置为当前),Call,Email,Web

当用户点击任何标签调用,电子邮件或网络时,它会开始拨打电话,或者撰写电子邮件,或者尊重地打开浏览器。

问题是,我只想要三个标签(电话,电子邮件,网络)和我不希望默认情况下选择任何标签,表示它们只应变为有效当用户触摸它们时......(呼叫或任何服务都不能成为主要部分)

下面给出了所有java编码,XML文件和Manifest代码,

XML文件(tab_activity_layout)

<?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">
    <LinearLayout
        android:orientation="vertical"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:padding="5dp">
    <RelativeLayout
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    >

        <TabWidget
            android:id="@android:id/tabs"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_alignParentBottom="true"
             />
                  <FrameLayout
            android:id="@android:id/tabcontent"
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:padding="5dp"></FrameLayout>

    </RelativeLayout>
    </LinearLayout>
</TabHost>

Java编码(MainTabActivity)

package com.NVT.android;

import android.app.TabActivity;
import android.content.Intent;
import android.content.res.Resources;
import android.os.Bundle;
import android.widget.TabHost;

public class MainTabActivity extends TabActivity{

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

            Resources res = getResources(); // Resource object to get Drawables
            TabHost tabHost = getTabHost();  // The activity TabHost
            TabHost.TabSpec spec;  // Resusable TabSpec for each tab
            Intent intent;  // Reusable Intent for each tab

            // Create an Intent to launch an Activity for the tab (to be reused)
            intent = new Intent().setClass(this, Main.class);

            // Initialize a TabSpec for each tab and add it to the TabHost
            spec = tabHost.newTabSpec("main").setIndicator("Main",
                              res.getDrawable(R.drawable.ic_tab_artists_grey))
                          .setContent(intent);
            tabHost.addTab(spec);

            TabHost host=getTabHost();

            host.addTab(host.newTabSpec("one")
                    .setIndicator("Call")
                    .setContent(new Intent(this, CallService.class)));

            host.addTab(host.newTabSpec("two")
                    .setIndicator("Email")
                    .setContent(new Intent(this, EmailService.class)));

            host.addTab(host.newTabSpec("three")
                    .setIndicator("Web")
                    .setContent(new Intent(this, WebService.class)));

        }

        }

清单文件

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
      package="com.NVT.android"
      android:versionCode="1"
      android:versionName="1.0">
    <application android:icon="@drawable/icon" android:label="@string/app_name">

            <activity android:name=".Main"
                  android:label="@string/app_name">
<!--            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter> -->
        </activity>

        <activity android:name=".MainTabActivity"
                  android:label="@string/app_name">
              <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter> 
        </activity>


        <activity android:name=".Courses">
        </activity>
        <activity android:name=".CampusMap">
        </activity>
        <activity android:name=".GettingHere">
        </activity>
        <activity android:name=".ILoveNescot">
        </activity>


        <activity android:name=".FurtherEducationCourses">
        </activity>
        <activity android:name=".HigherEducationCourses">
        </activity>
        <activity android:name=".EmployersTrainingCourses">
        </activity>
        <activity android:name=".WebService">
        </activity>
        <activity android:name=".CallService">
        </activity>
        <activity android:name=".EmailService">
        </activity>








    </application>
    <uses-sdk android:minSdkVersion="9" />
<uses-permission android:name="android.permission.CALL_PHONE"></uses-permission>
<uses-permission android:name="android.permission.INTERNET" />
</manifest> 

4 个答案:

答案 0 :(得分:1)

你说你希望标签像按钮一样 - 所以你为什么不用它来代替呢?

按下它们时,只需根据按下的按钮更改上面区域的内容即可。

TabHost要求其中一个选项卡始终可见,这样虽然可以通过TabHost执行您想要的操作,并且可以使用可见性,但如果您只是使用,您的代码将更简单,更易于维护和调试而不是按钮。

编辑:

我没有对此进行测试,并且已经从内存中编写了它,但我认为它应该给出一个起点。

layout.xml:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:padding="5dp">
    <FrameLayout
        android:id="@android:id/contentpane"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:padding="5dp">
    </FrameLayout>
    <LinearLayout
        abdroid:orientation="horizontal"
        android:gravity="bottom"
        android:layout_width="fill_parent">
        <Button android:id="@android:id/callbutton"
            android:text="Call"/>
        <Button android:id="@android:id/emailbutton"
            android:text="Email"/>
        <Button android:id="@android:id/webbutton"
            android:text="Web"/>
    </LinearLayout>
</LinearLayout>

onClick()按钮中,设置内容窗格的相关内容视图:

FrameLayout fl = ( FrameLayout ) findViewById ( R.id.contentpane );
fl.setContentView ( R.id.callservice ); // Or create it programmatically, and use the layout here

答案 1 :(得分:0)

    host.setCurrentTabByTag(tag);
    host.setCurrentTab(index);

使用上述方法

答案 2 :(得分:0)

你说“我不想在默认情况下选择任何标签”,但这是标签组件的反行为。 选项卡布局的默认字符是至少选择一个选项卡。 也许你必须重新设计你的UI,想想世界上的其他用户界面,例如Firefox ......

问候

答案 3 :(得分:0)

Intent i = new Intent(this,SomeActivity.class);

tabHost.addTab(tabHost.newTabSpec( “invisible_tab”)setIndicator( “”)setContent(I));

//隐藏标签

tabHost.getTabWidget()getChildTabViewAt(0).setVisibility(View.GONE);