1

プログラムで 2 つのタブの 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 アクティビティ ( として名前でタブ オーダーで表示する必要があるアクティビティ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

タブ オーダーで他のすべてのクラスを表示する親クラスを作成します。

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

タブ オーダーで表示する最初の子クラスを作成します

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

タブ オーダーで表示する 2 番目の子クラスを作成します。

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 に答える