在Android中添加片段内的片段?

 moon2502863581 发布于 2023-02-12 07:31

我想在片段中添加一个TabHost.代码如下.这里面是碎片.我正在尝试添加TabHost以显示两个选项卡:

package com.nordicsoft.dilosysNewVersion;

import android.app.Fragment;
import android.content.Intent;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TabHost;

public class Fragment_Coupons extends Fragment {
    TabHost tabHost;
    TabHost.TabSpec spec;

    public Fragment_Coupons() {
    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState) {

        View rootView = inflater.inflate(R.layout.fragment_coupon, container,
                false);
        tabHost = (TabHost) rootView.findViewById(android.R.id.tabhost);
        tabHost.setup();
        //Add_Text_To_Tab("Android", "IOS");

        Intent intentAndroid = new Intent().setClass(getActivity(),
                Aclass.class);
        spec = tabHost.newTabSpec("Android").setContent(intentAndroid)
                .setIndicator("Android");

        tabHost.addTab(spec);

        Intent intentBus = new Intent().setClass(getActivity(), Bclass.class);
        spec = tabHost.newTabSpec("Welcome").setIndicator("Welcome")
                .setContent(intentBus).setIndicator("Welcome");
        tabHost.addTab(spec);
        return rootView;
    }

}

XML代码:



    
        
        
    

这给了我错误:

12-09 17:40:53.509: E/AndroidRuntime(18103): FATAL EXCEPTION: main
12-09 17:40:53.509: E/AndroidRuntime(18103): java.lang.IllegalStateException: Did you forget to call 'public void setup(LocalActivityManager activityGroup)'?
12-09 17:40:53.509: E/AndroidRuntime(18103):    at android.widget.TabHost$IntentContentStrategy.getContentView(TabHost.java:690)
12-09 17:40:53.509: E/AndroidRuntime(18103):    at android.widget.TabHost.setCurrentTab(TabHost.java:356)
12-09 17:40:53.509: E/AndroidRuntime(18103):    at android.widget.TabHost.addTab(TabHost.java:246)
12-09 17:40:53.509: E/AndroidRuntime(18103):    at com.nordicsoft.dilosysNewVersion.Fragment_Coupons.onCreateView(Fragment_Coupons.java:32)
12-09 17:40:53.509: E/AndroidRuntime(18103):    at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:828)
12-09 17:40:53.509: E/AndroidRuntime(18103):    at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:1032)
12-09 17:40:53.509: E/AndroidRuntime(18103):    at android.app.BackStackRecord.run(BackStackRecord.java:622)
12-09 17:40:53.509: E/AndroidRuntime(18103):    at android.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1382)
12-09 17:40:53.509: E/AndroidRuntime(18103):    at android.app.FragmentManagerImpl$1.run(FragmentManager.java:426)
12-09 17:40:53.509: E/AndroidRuntime(18103):    at android.os.Handler.handleCallback(Handler.java:605)
12-09 17:40:53.509: E/AndroidRuntime(18103):    at android.os.Handler.dispatchMessage(Handler.java:92)
12-09 17:40:53.509: E/AndroidRuntime(18103):    at android.os.Looper.loop(Looper.java:137)
12-09 17:40:53.509: E/AndroidRuntime(18103):    at android.app.ActivityThread.main(ActivityThread.java:4517)
12-09 17:40:53.509: E/AndroidRuntime(18103):    at java.lang.reflect.Method.invokeNative(Native Method)
12-09 17:40:53.509: E/AndroidRuntime(18103):    at java.lang.reflect.Method.invoke(Method.java:511)
12-09 17:40:53.509: E/AndroidRuntime(18103):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:993)
12-09 17:40:53.509: E/AndroidRuntime(18103):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:760)
12-09 17:40:53.509: E/AndroidRuntime(18103):    at dalvik.system.NativeStart.main(Native Method)
12-09 17:46:02.770: I/Process(18103): Sending signal. PID: 18103 SIG: 9

ElCharro.. 68

尝试这样做来处理选项卡:

public class MainFragment extends Fragment {
    private FragmentTabHost mTabHost;

    //Mandatory Constructor
    public MainFragment() {
    }

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

    }

    public View onCreateView(LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState) {

        View rootView = inflater.inflate(R.layout.fragment_tabs,container, false);


        mTabHost = (FragmentTabHost)rootView.findViewById(android.R.id.tabhost);
        mTabHost.setup(getActivity(), getChildFragmentManager(), R.id.realtabcontent);

        mTabHost.addTab(mTabHost.newTabSpec("fragmentb").setIndicator("Fragment B"),
                FragmentB.class, null);
        mTabHost.addTab(mTabHost.newTabSpec("fragmentc").setIndicator("Fragment C"),
                FragmentC.class, null);
        mTabHost.addTab(mTabHost.newTabSpec("fragmentd").setIndicator("Fragment D"),
                FragmentD.class, null);


        return rootView;
    }
}

随着布局:



    

        

    

MotherActivity主持MainFragment:

public class MotherActivity extends FragmentActivity {

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

        MainFragment fragmenttab = new MainFragment();
        getSupportFragmentManager().beginTransaction()
        .add(R.id.item_detail_container, fragmenttab).commit();


    }

和MotherActivity布局:


之后只需创建正常的片段B和C等Class.结果将是:

片段结果中的制表符片段

撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有