有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java TabHost在使用自定义活动时崩溃

因此,我通过拖放制作了一个标签,然后在标签中进行编码,使其工作正常。然而,我不得不使用标签线性布局的内容,这是不一致的。所以我决定为每个标签做一个单独的活动。现在,当我将集合内容更改为类的意图时,我的项目崩溃了。我在谷歌上搜索了这个,并寻找了修复方法,但什么都没有

这是我的密码:

public class MainActivity extends AppCompatActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    InitTabHost();
}

private void InitTabHost(){

    //Setup Initial Tab Host
    TabHost tbHost = (TabHost)findViewById(R.id.tabHost);
    tbHost.setup();

    //Setup Tab 1

    TabHost.TabSpec NFtab = tbHost.newTabSpec("one");
    NFtab.setIndicator("News Feed");
    Intent intent = new Intent(this,NewsFeed.class);
    NFtab.setContent(intent);
    tbHost.addTab(NFtab);

    TabHost.TabSpec AGTab = tbHost.newTabSpec("two");
    AGTab.setIndicator("Art Gallery");
    AGTab.setContent(R.id.tab2);
    tbHost.addTab(AGTab);

    TabHost.TabSpec CreateTab = tbHost.newTabSpec("three");
    CreateTab.setIndicator("Create");
    CreateTab.setContent(R.id.tab3);
    tbHost.addTab(CreateTab);

    TabHost.TabSpec ProfileTab = tbHost.newTabSpec("Four");
    ProfileTab.setIndicator("Profile");
    ProfileTab.setContent(R.id.tab4);
    tbHost.addTab(ProfileTab);
}}

以下是我使用tabhost的主要布局:

<?xml version="1.0" encoding="utf-8"?>

<TabHost
    安卓:layout_width="match_parent"
    安卓:layout_height="match_parent"
    安卓:id="@+id/tabHost">

    <RelativeLayout
        安卓:layout_width="match_parent"
        安卓:layout_height="match_parent"
        安卓:orientation="vertical">

        <TabWidget
            安卓:id="@安卓:id/tabs"
            安卓:layout_alignParentBottom="true"
            安卓:layout_width="match_parent"
            安卓:layout_height="wrap_content"
            />

        <FrameLayout
            安卓:id="@安卓:id/tabcontent"
            安卓:layout_width="match_parent"
            安卓:layout_height="match_parent">

            <LinearLayout
                安卓:id="@+id/tab1"
                安卓:layout_width="match_parent"
                安卓:layout_height="match_parent"
                安卓:orientation="vertical">

            </LinearLayout>

            <LinearLayout
                安卓:id="@+id/tab2"
                安卓:layout_width="match_parent"
                安卓:layout_height="match_parent"
                安卓:orientation="vertical">

            </LinearLayout>

            <LinearLayout
                安卓:id="@+id/tab3"
                安卓:layout_width="match_parent"
                安卓:layout_height="match_parent"
                安卓:orientation="vertical">

            </LinearLayout>

            <LinearLayout
                安卓:id="@+id/tab4"
                安卓:layout_width="match_parent"
                安卓:layout_height="match_parent"
                安卓:orientation="vertical">

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

这是另一个活动课:

public class NewsFeed extends TabActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_news_feed);
}}

编辑日志:

07/28 01:56:29: Launching app
$ adb shell am start -n "com.example.akashbakshi.artnsketch/com.example.akashbakshi.artnsketch.MainActivity" -a 安卓.intent.action.MAIN -c 安卓.intent.category.LAUNCHER
Connected to process 3940 on device Nexus_6P_API_23 [emulator-5554]
I/art: Not late-enabling -Xcheck:jni (already on)
W/System: ClassLoader referenced unknown path: /data/app/com.example.akashbakshi.artnsketch-2/lib/x86
W/System: ClassLoader referenced unknown path: /data/app/com.example.akashbakshi.artnsketch-2/lib/x86
W/art: Before Android 4.1, method 安卓.graphics.PorterDuffColorFilter 安卓.support.graphics.drawable.VectorDrawableCompat.updateTintFilter(安卓.graphics.PorterDuffColorFilter, 安卓.content.res.ColorStateList, 安卓.graphics.PorterDuff$Mode) would have incorrectly overridden the package-private method in 安卓.graphics.drawable.Drawable
D/AndroidRuntime: Shutting down VM
E/AndroidRuntime: FATAL EXCEPTION: main
                  Process: com.example.akashbakshi.artnsketch, PID: 3940
                  java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.akashbakshi.artnsketch/com.example.akashbakshi.artnsketch.MainActivity}: java.lang.IllegalStateException: Did you forget to call 'public void setup(LocalActivityManager activityGroup)'?
                      at 安卓.app.ActivityThread.performLaunchActivity(ActivityThread.java:2416)
                      at 安卓.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2476)
                      at 安卓.app.ActivityThread.-wrap11(ActivityThread.java)
                      at 安卓.app.ActivityThread$H.handleMessage(ActivityThread.java:1344)
                      at 安卓.os.Handler.dispatchMessage(Handler.java:102)
                      at 安卓.os.Looper.loop(Looper.java:148)
                      at 安卓.app.ActivityThread.main(ActivityThread.java:5417)
                      at java.lang.reflect.Method.invoke(Native Method)
                      at com.安卓.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
                      at com.安卓.internal.os.ZygoteInit.main(ZygoteInit.java:616)
                   Caused by: java.lang.IllegalStateException: Did you forget to call 'public void setup(LocalActivityManager activityGroup)'?
                      at 安卓.widget.TabHost$IntentContentStrategy.getContentView(TabHost.java:722)
                      at 安卓.widget.TabHost.setCurrentTab(TabHost.java:388)
                      at 安卓.widget.TabHost.addTab(TabHost.java:222)
                      at com.example.akashbakshi.artnsketch.MainActivity.InitTabHost(MainActivity.java:30)
                      at com.example.akashbakshi.artnsketch.MainActivity.onCreate(MainActivity.java:15)
                      at 安卓.app.Activity.performCreate(Activity.java:6237)
                      at 安卓.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1107)
                      at 安卓.app.ActivityThread.performLaunchActivity(ActivityThread.java:2369)
                      at 安卓.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2476) 
                      at 安卓.app.ActivityThread.-wrap11(ActivityThread.java) 
                      at 安卓.app.ActivityThread$H.handleMessage(ActivityThread.java:1344) 
                      at 安卓.os.Handler.dispatchMessage(Handler.java:102) 
                      at 安卓.os.Looper.loop(Looper.java:148) 
                      at 安卓.app.ActivityThread.main(ActivityThread.java:5417) 
                      at java.lang.reflect.Method.invoke(Native Method) 
                      at com.安卓.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726) 
                      at com.安卓.internal.os.ZygoteInit.main(ZygoteInit.java:616) 

共 (2) 个答案

  1. # 2 楼答案

    您可以使用我的代码:

    There are 2 classes:
    

    MyTabs。java

    public class MyTabs extends TabLayout {
        String text;
        public MyTabs(Context context) {
            super(context);
        }
    
        public MyTabs(Context context, AttributeSet attrs) {
            super(context, attrs);
        }
    
        public MyTabs(Context context, AttributeSet attrs, int defStyleAttr) {
            super(context, attrs, defStyleAttr);
        }
    
        public void setText(String text) {
            this.text = text;
        }
    
        @Override
        public void setTabTextColors(int normalColor, int selectedColor) {
            super.setTabTextColors(normalColor, selectedColor);
        }
    
        @Override
        public void setBackgroundColor(int color) {
            super.setBackgroundColor(color);
        }
    
        @Override
        public void addTab(@NonNull Tab tab) {
            super.addTab(tab);
        }
    
        @NonNull
        @Override
        public Tab newTab() {
            return super.newTab();
        }
    
        @Override
        public void setSmoothScrollingEnabled(boolean smoothScrollingEnabled) {
            super.setSmoothScrollingEnabled(smoothScrollingEnabled);
        }
    
        @Override
        public void setTabMode(int mode) {
            super.setTabMode(mode);
        }
    
    }
    

    主要活动。xml

    <?xml version="1.0" encoding="utf-8"?>
    

    <android.support.design.widget.AppBarLayout
        android:id="@+id/appbar"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:paddingTop="@dimen/appbar_padding_top"
        android:theme="@style/AppTheme.AppBarOverlay">
    
    
        <android.support.v7.widget.Toolbar
            android:id="@+id/toolbar"
            android:layout_width="match_parent"
            android:layout_height="?attr/actionBarSize"
            android:background="?attr/colorPrimary"
            app:layout_scrollFlags="enterAlways"
            app:popupTheme="@style/AppTheme.PopupOverlay">
    
        </android.support.v7.widget.Toolbar>
    
        <com.mypackage.here.MyTabs
            android:id="@+id/mytabs"
            android:layout_width="match_parent"
            android:layout_height="wrap_content" />
    
    </android.support.design.widget.AppBarLayout>
    
    <android.support.v4.view.ViewPager
        android:id="@+id/container"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        app:layout_behavior="@string/appbar_scrolling_view_behavior" />
    

    内部main活动。java

        ViewPager mViewPager;
        MyTabs tabs;
        TabLayout.Tab latestTab;
        TabLayout.Tab allVideosTab;
    
    
        mViewPager = (ViewPager) findViewById(R.id.container);
        mViewPager.setAdapter(mSectionsPagerAdapter);
    
        //Tab layout
        tabs = (MyTabs) findViewById(R.id.mytabs);
        tabs.setTabTextColors(Color.LTGRAY, Color.WHITE);
        tabs.setTabGravity(TabLayout.GRAVITY_CENTER);
        tabs.setSmoothScrollingEnabled(true);
        tabs.setTabMode(TabLayout.MODE_SCROLLABLE);
        latestTab = tabs.newTab();
        allVideosTab = tabs.newTab();
    
        //ADD TABS IN REVERSE ORDER OF APPEARANCE
        tabs.addTab(allVideosTab);
        tabs.addTab(latestTab);
    
        //*********ADD ALL tabs above this*/
        tabs.setupWithViewPager(mViewPager);
    
        //Manipulate tabs here
        latestTab.setText("Latest");
        allVideosTab.setText("All Videos");