android - 在 tabhost 中重新加载一个 Activity

标签 android android-activity android-tabhost reload

我有一个标签主机,我在那里添加了 3 个 Activity (每个标签一个 Activity )。 每次更改选项卡时,我都需要知道如何在 Activity 中调用新实习生。 我为 tabhost 添加了一个监听器。当我使用 clearAllTabs(); 方法并在监听器中再次添加所有选项卡时,应用程序崩溃了。 当我使用代码从 View 中删除用户单击的特定选项卡 tabHost.getTabWidget().removeView(tabHost.getTabWidget().getChildTabViewAt(i)); tabHost.addTab(我要替换的tab);

然后新标签位于标签主机的末尾。

我只需要一个示例,说明每次用户单击特定选项卡时如何重新加载相应的 Activity 。

我的代码:

@Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        // ActionBar bar = getSupportActionBar();

        // requestWindowFeature(Window.FEATURE_NO_TITLE);
        setContentView(R.layout.activity_main);

        Resources res = getResources();
        LocalActivityManager mlam = new LocalActivityManager(this, false);
        final TabHost tabHost = (TabHost) findViewById(android.R.id.tabhost);
        mlam.dispatchCreate(savedInstanceState);
        tabHost.setup(mlam);
        TabHost.TabSpec spec;
        Intent intent;

        // TabHost tabHost = getTabHost();
        // tabHost.setup();

        TabSpec specAll = tabHost.newTabSpec("All");
        specAll.setIndicator("All");
        Intent allIntent = new Intent(this, allActivity.class);
        specAll.setContent(allIntent);

        // specAll.setContent(R.id.allList);

        Log.d("SpecAll",""+specAll.setContent(allIntent));

        TabSpec specIn = tabHost.newTabSpec("in");
        specIn.setIndicator("In");
        Intent inIntent = new Intent(this, inActivity.class);
        specIn.setContent(inIntent);

        TabSpec specOut = tabHost.newTabSpec("Out");
        specOut.setIndicator("Out");
        Intent outIntent = new Intent(this, outActivity.class);
        specOut.setContent(outIntent);

        // Adding all TabSpec to TabHost
        tabHost.addTab(specAll); // Adding all tab
        tabHost.addTab(specIn); // Adding in tab
        tabHost.addTab(specOut); // Adding out tab



        tabHost.setOnTabChangedListener(new OnTabChangeListener() {



                        @Override
                        public void onTabChanged(String tabId) {

                            int i = tabHost.getCurrentTab();
                            //Log.i("@@@@@@@@ ANN CLICK TAB NUMBER", "------" + i);

                            if (i == 0) {
                                Log.d("TAB","" +i);

                            } else if (i == 1) {
                                Log.d("TAB","" +i);
                            }
                            else
                                Log.d("TAB", ""+i);
                        }
                    });


    }

最佳答案

Activity 和 tabhost 似乎有问题。要重新加载 Activity ,您只需要做:

specAll.setContent(yourIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP));

就在 tabHost.addTab 之前

关于android - 在 tabhost 中重新加载一个 Activity ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11949112/

相关文章:

Android - 支持手机上的平板电脑应用

java - 如何将 fragment 的值设置为不同的 Activity

android - android输入数据时TabHost栏位于键盘上方

java - 在 Android 上启动 Activity 并共享数据

android - 如何使用android中的单击按钮将所有选项卡的数据添加到数据库中

Android 通知跑马灯不工作

java - 如何在java中创建一个appium android设备 "back button"

android - ListFragment给出id属性为 'android.R.id.list'的ListView

android - 在 Android 中启动新的 Activity 并完成当前的 Activity?

android - EditText 上的 InputFilter 导致重复文本