Android 异常:您是否忘记调用“public void setup (LocalActivityManager activityGroup)”

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/3272500/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-08-20 09:24:31  来源:igfitidea点击:

Android Exception: Did you forget to call 'public void setup (LocalActivityManager activityGroup)'

androidexceptionandroid-tabhost

提问by ZHAO Xiaojian

MyCode:

我的代码:

public class MainActivity extends Activity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        final TabHost tabHost = (TabHost) findViewById(R.id.tabhost);

//      LocalActivityManager mLocalActivityManager = new LocalActivityManager(this, false);
        tabHost.setup();

        TabSpec tabSpecCheckIn = tabHost.newTabSpec(getResources().getText(R.string.button_check_in).toString());

        tabSpecCheckIn.setIndicator(getResources().getText(R.string.button_check_in).toString(), getResources().getDrawable(android.R.drawable.star_off));
        tabSpecCheckIn.setContent(R.id.check_in);
        tabHost.addTab(tabSpecCheckIn);

        TabSpec tabSpecReview = tabHost.newTabSpec(getResources().getText(R.string.button_review).toString());
        tabSpecReview.setIndicator(getResources().getText(R.string.button_review).toString(), getResources().getDrawable(android.R.drawable.star_off));
        tabSpecReview.setContent(R.id.review);
        tabHost.addTab(tabSpecReview);

        TabSpec tabSpecMyCircles = tabHost.newTabSpec(getResources().getText(R.string.button_my_circles).toString());
        tabSpecMyCircles.setIndicator(getResources().getText(R.string.button_my_circles).toString(), getResources().getDrawable(android.R.drawable.star_off));
        tabSpecMyCircles.setContent(R.id.my_circle);
        tabHost.addTab(tabSpecMyCircles);

        TabSpec tabSpecMySettings = tabHost.newTabSpec(getResources().getText(R.string.button_settings).toString());
        tabSpecMySettings.setIndicator(getResources().getText(R.string.button_settings).toString(), getResources().getDrawable(android.R.drawable.star_off));
        tabSpecMySettings.setContent(new Intent(this,CheckInActivity.class));
        tabHost.addTab(tabSpecMySettings);

        tabHost.setCurrentTab(0);
    }
}

XML:

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/tabhost"
        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"
            android:paddingTop="65px">

            <LinearLayout android:id="@+id/check_in"
                android:orientation="vertical" android:layout_width="fill_parent"
                android:layout_height="fill_parent" android:padding="5px">
                <TextView android:layout_width="wrap_content"
                    android:layout_height="wrap_content" android:text="date"
                    android:textStyle="bold" />
            </LinearLayout>

            <LinearLayout android:id="@+id/review"
                android:orientation="vertical" android:layout_width="fill_parent"
                android:layout_height="fill_parent" android:padding="5px">
                <TextView android:layout_width="wrap_content"
                    android:layout_height="wrap_content" android:text="lieu"
                    android:textStyle="bold" />
            </LinearLayout>

            <LinearLayout android:id="@+id/my_circle"
                android:orientation="vertical" android:layout_width="fill_parent"
                android:layout_height="fill_parent" android:padding="5px">
            </LinearLayout>

            <LinearLayout android:id="@+id/setting"
                android:orientation="vertical" android:layout_width="fill_parent"
                android:layout_height="fill_parent" android:padding="5px">
            </LinearLayout>
        </FrameLayout>
    </TabHost>
</LinearLayout>

When I click the button of Setting, exctption:

当我点击设置按钮时,exctption:

Did you forget to call 'public void setup (LocalActivityManager activityGroup)'

您是否忘记调用“public void setup (LocalActivityManager activityGroup)”

Who Can help me. I try to extends from TabActiviyor ActivityGroupstill other exceptions!!!
I want to put the buttons of Tabhost at bottom and when I click the button invoke different Activities!

谁能帮我。我尝试从TabActiviyActivityGroup其他异常中扩展!!!
我想把 Tabhost 的按钮放在底部,当我点击按钮时会调用不同的活动!

回答by douyw

you need change MainActivity's base class from Activity to ActivityGroup, as follows:

您需要将 MainActivity 的基类从 Activity 更改为 ActivityGroup,如下所示:

  public class MainActivity extends ActivityGroup {
  ...
  }

ActivityGroup will take care of an instance of LocalActivityManager. So you don't need to create it. After the base class is changed, just call getLocalActivityManager() function defined in the base class to get that instance. Call tabHost's setup function like this:

ActivityGroup 将处理 LocalActivityManager 的一个实例。所以你不需要创建它。基类更改后,只需调用基类中定义的 getLocalActivityManager() 函数即可获取该实例。像这样调用 tabHost 的设置函数:

  tabHost.setup(this.getLocalActivityManager());

回答by Sameer Segal

Instead of setup():

而不是设置():

LocalActivityManager mLocalActivityManager = new LocalActivityManager(this, false);
setup(mLocalActivityManager);