1

我需要使用选项卡布局,在其中我尝试以编程方式访问 2 个选项卡中的两个活动类。我试过但在运行时出错。请参阅下面的代码,测试活动

public class TestActivity extends TabActivity {
    protected static final View View = null;

    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);        


        Resources ressources = getResources(); 
        TabHost tabHost = getTabHost(); 
        // Android tab
                Intent intentAndroid = new Intent().setClass(this, AndroidActivity.class);
                TabSpec tabSpecAndroid = tabHost
                  .newTabSpec("Android")

                  .setContent(intentAndroid);

                tabHost.addTab(tabSpecAndroid); 
        setContentView(tabHost);

    }
}

Android 活动(需要在名称中按 Tab 键顺序显示的活动andriod

import android.app.Activity;
import android.os.Bundle;
import android.widget.TextView;

public class AndroidActivity extends Activity 
{
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        TextView textview = new TextView(this);
        textview.setText("This is Android tab");
        setContentView(textview);
    }
}

我不知道它有什么问题。请以TabLayout编程方式提供简单的示例(不使用任何 xml 文件)。

4

2 回答 2

1

创建一个父类以按 Tab 顺序显示所有其他类

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

public class TestActivity extends TabActivity {
protected static final View View = null;

/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);        

    Resources ressources = getResources(); 
    TabHost tabHost = getTabHost(); 
    // Android tab
            Intent intentAndroid = new Intent().setClass(this, AndroidActivity.class);
            TabSpec tabSpecAndroid = tabHost
              .newTabSpec("Android")
              //add .png type images in res folder hdpi,ldpi,mdpi,xhdpi
tabSpecAndroid.setIndicator("",getResources().getDrawable(R.drawable.arrival));//arrival is the name of png image, delete this line if u hav no images
              .setContent(intentAndroid);
            tabSpecAndroid.setIndicator("Android");
            tabHost.addTab(tabSpecAndroid);     

    //Welcome tab
            Intent intentBus = new Intent().setClass(this, Welcome.class);
            TabSpec tabSpecBus = tabHost
                    .newTabSpec("Welcome")
                    .setContent(intentBus);
            tabSpecBus.setIndicator("Welcome");
            tabHost.addTab(tabSpecBus);     
}
}

创建我们要在其中按 Tab 键顺序显示的第一个子类

import android.app.Activity;
import android.os.Bundle;
import android.widget.TextView;

public class AndroidActivity extends Activity 
{
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    TextView textview = new TextView(this);
    textview.setText("This is Android tab");
    setContentView(textview);
}
}

创建第二个子类,我们希望在其中按 Tab 键顺序显示

import android.app.Activity;
import android.os.Bundle;
import android.widget.TextView;
public class Welcome extends Activity
{
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    TextView textview = new TextView(this);
    textview.setText("This is Welcome tab");
    setContentView(textview);
}
}

在 android manifest.cml 添加所有子类

<activity android:name=".AndroidActivity"     android:theme="@android:style/Theme.Black.NoTitleBar"></activity>
    <activity android:name=".Welcome" android:theme="@android:style/Theme.Black.NoTitleBar"></activity>
</application>

现在运行代码,就是这样

于 2012-10-30T07:09:09.980 回答
0

ATabActivity可能已经包含了内容。试着不要打电话setContentView(),看看是否能解决你的问题。

于 2012-10-30T06:31:58.910 回答