android - 在 Android 应用程序中单击选项卡时打开新类时出错

标签 android

我正在开发一个 Android 应用程序,其中有一个标签栏。我希望当我单击选项卡时,新类应该打开。我该如何实现?我的主要问题是当我通过单击选项卡的 Intent 时。然后它崩溃了。

我正在发布我的 Java:

package com.solataire;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.widget.TabHost;
import android.widget.TabHost.TabSpec;

public class MainActivity extends Activity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        TabHost tab_host = (TabHost) findViewById(R.id.tab_host);
        tab_host.setup();

        TabSpec tabspec1 = tab_host.newTabSpec("TAB_1");
        tabspec1.setIndicator("Tab 1");
        tabspec1.setContent(R.id.first_tab);
        tab_host.addTab(tabspec1);

        TabSpec tabspec2 = tab_host.newTabSpec("TAB_2");
        tabspec2.setIndicator("Tab 2");
        tabspec2.setContent(R.id.second_tab);
        tab_host.addTab(tabspec2);

        TabSpec tabspec3 = tab_host.newTabSpec("TAB_3");
        tabspec3.setIndicator("Tab 3");
        tabspec3.setContent(R.id.third_tab);
        tab_host.addTab(tabspec3);

        tab_host.setCurrentTab(0);
    }
}

我的 XML 文件是:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical" android:layout_width="fill_parent"
    android:layout_height="fill_parent">
    <TabHost android:id="@+id/tab_host"
        android:layout_width="fill_parent" android:layout_height="fill_parent">
        <TabWidget android:layout_width="fill_parent"
            android:layout_height="wrap_content" android:id="@android:id/tabs"
            android:layout_gravity="bottom" />
        <FrameLayout android:id="@android:id/tabcontent"
            android:layout_width="fill_parent" android:layout_height="fill_parent" >
            <LinearLayout android:id="@+id/first_tab"
                android:orientation="vertical" android:layout_width="fill_parent"
                android:layout_height="fill_parent" >
                <TextView android:layout_width="fill_parent"
                    android:layout_height="fill_parent" android:text="First Tab" />
                <!-- Replace TextView with your layout content for this tab -->
            </LinearLayout>
            <LinearLayout android:id="@+id/second_tab"
                android:orientation="vertical" android:layout_width="fill_parent"
                  android:layout_height="fill_parent" >
                <TextView android:layout_width="fill_parent"
                    android:layout_height="fill_parent" android:text="Second Tab" />
                <!-- Replace TextView with your layout content for this tab -->
            </LinearLayout>
            <LinearLayout android:id="@+id/third_tab"
                android:orientation="vertical" android:layout_width="fill_parent"
                android:layout_height="fill_parent" >
                <TextView android:layout_width="fill_parent"
                    android:layout_height="fill_parent" android:text="One More Tab" />
                <!-- Replace TextView with your layout content for this tab -->
            </LinearLayout>
            <LinearLayout android:id="@+id/edit_item_text_tab"
                android:orientation="vertical" android:layout_width="fill_parent"
                android:layout_height="fill_parent" />
        </FrameLayout>
    </TabHost>
</LinearLayout>

在这一点上有人可以帮助我吗?

最佳答案

你可以试试这个。

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

    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, ArtistsActivity.class);

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

    // Do the same for the other tabs
    intent = new Intent().setClass(this, AlbumsActivity.class);
    spec = tabHost.newTabSpec("albums").setIndicator("Albums",
                      res.getDrawable(R.drawable.ic_tab_albums))
                  .setContent(intent);
    tabHost.addTab(spec);

    intent = new Intent().setClass(this, SongsActivity.class);
    spec = tabHost.newTabSpec("songs").setIndicator("Songs",
                      res.getDrawable(R.drawable.ic_tab_songs))
                  .setContent(intent);
    tabHost.addTab(spec);

    tabHost.setCurrentTab(2);
}

这是 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">
    <LinearLayout
        android:orientation="vertical"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:padding="5dp">
        <TabWidget
            android:id="@android:id/tabs"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content" />
        <FrameLayout
            android:id="@android:id/tabcontent"
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:padding="5dp" />
    </LinearLayout>
</TabHost>

关于android - 在 Android 应用程序中单击选项卡时打开新类时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8558928/

相关文章:

android - 在gridview中下载图片时如何避免 "outofmemory"?

java - 当从我的 Android 应用程序将数据保存到 mysql 时,它会删除空格

java - ListView setOnItemClickListener 未执行

java - 缺少要求 : Google Plugin for Eclipse 3. 7 2.6.1 需要 'org.eclipse.platform.feature.group [3.7.0,3.8.0)' 但找不到

android - 通过设置时间android进行每日本地通知

android - 如何在网站输入时禁用移动键盘自动完成

android Weemo SDK 截取 WeemoVideoInFrame 的屏幕截图

android - ListViewAutoScrollHelper.canTargetScrollVertically处的NullPointerException(ListViewAutoScrollHelper.java:73)

java - relativelayout 上的高斯模糊

android - 以编程方式将按钮添加到线性布局的底部