Java 当我在另一个程序中输入一个片段时,我的应用程序停止工作

Java 当我在另一个程序中输入一个片段时,我的应用程序停止工作,java,android,android-fragments,Java,Android,Android Fragments,我有一个包含NavigationDrawer的活动,如果我输入某个项目,这个NavigationDrawer将启动一个片段。因此,在其中一个iTen中,我有一个片段,它包含一个TabHost,其中有4个片段在PageViewer中具有滑动效果(PacksFragment) 问题在于TabHost的第一个片段,TabFragmentA。当我在做界面时,它会打开并正常工作。但是当我开始编程时,每次我要测试,或者应用程序无法打开,或者当我进入TabFragmentA的片段父项时应用程序停止工作 活动和

我有一个包含NavigationDrawer的活动,如果我输入某个项目,这个NavigationDrawer将启动一个片段。因此,在其中一个iTen中,我有一个片段,它包含一个TabHost,其中有4个片段在PageViewer中具有滑动效果(PacksFragment)

问题在于TabHost的第一个片段,TabFragmentA。当我在做界面时,它会打开并正常工作。但是当我开始编程时,每次我要测试,或者应用程序无法打开,或者当我进入TabFragmentA的片段父项时应用程序停止工作

活动和片段的顺序如下: MainActivity>PacksFragment>TabFragmentA、TabFragmentB、TabFragmentC、TabFragmentD

PacksFragment.java

public class PacksFragment extends Fragment
        implements ViewPager.OnPageChangeListener, TabHost.OnTabChangeListener {

    TabHost tabHost;
    ViewPager viewPager;

    public PacksFragment() {
        // Required empty public constructor
    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        // Inflate the layout for this fragment
        View view = inflater.inflate(R.layout.fragment_packs, container, false);

        final TabHost host = (TabHost) view.findViewById(R.id.tabhost);
        host.setup();

        viewPager = (ViewPager) view.findViewById(R.id.viewPager);
        List<Fragment> listFragments = new ArrayList<Fragment>();
        listFragments.add(new TabFragmentA());
        listFragments.add(new TabFragmentB());
        listFragments.add(new TabFragmentC());
        listFragments.add(new TabFragmentD());

        MyFragmentPagerAdapter myFragmentPagerAdapter = new MyFragmentPagerAdapter(
                getFragmentManager(), listFragments);
        viewPager.setAdapter(myFragmentPagerAdapter);
        viewPager.setOnPageChangeListener(this);

        tabHost = (TabHost) view.findViewById(R.id.tabhost);
        tabHost.setup();

        String[] tabNames = {"NUIA", "HARANYA", "OCEANIC", "AURORIA"};
        for(int i=0; i<tabNames.length; i++) {
            TabHost.TabSpec tabSpec;
            tabSpec = tabHost.newTabSpec(tabNames[i]);
            tabSpec.setIndicator(tabNames[i]);
            tabSpec.setContent(new FakeContent(getActivity().getApplicationContext()));
            tabHost.addTab(tabSpec);
            View tabView = host.getTabWidget().getChildTabViewAt(i);
            tabView.setPadding(0, 0, 0, 0);
            TextView tv = (TextView)tabView.findViewById(android.R.id.title);
            tv.setSingleLine();
            tv.setTextSize(13);
            tv.setTextColor(0xFFFFFFFF);
        }

        tabHost.setOnTabChangedListener(this);

        return view;
    }

    public class FakeContent implements TabHost.TabContentFactory {

        Context context;
        public FakeContent(Context mcontext) {
            context = mcontext;
        }

        @Override
        public View createTabContent(String tag) {
            View fakeView = new View(context);
            fakeView.setMinimumHeight(0);
            fakeView.setMinimumWidth(0);
            return fakeView;
        }

    }

    @Override
    public void onTabChanged(String tabId) {
        int selectedItem = tabHost.getCurrentTab();
        viewPager.setCurrentItem(selectedItem);
    }

    @Override
    public void onPageScrollStateChanged(int arg0) {

    }

    @Override
    public void onPageScrolled(int arg0, float arg1, int arg2) {

    }

    @Override
    public void onPageSelected(int selectedItem) {
        tabHost.setCurrentTab(selectedItem);
    }

}
公共类PacksFragment扩展片段
实现ViewPager.OnPageChangeListener、TabHost.OnTabChangeListener{
TabHost-TabHost;
查看页面查看页面;
公共PacksFragment(){
//必需的空公共构造函数
}
@凌驾
创建视图上的公共视图(布局、充气机、视图组容器、,
Bundle savedInstanceState){
//为该碎片膨胀布局
视图=充气机。充气(R.layout.fragment\u packs,container,false);
final TabHost host=(TabHost)view.findviewbyd(R.id.TabHost);
host.setup();
viewPager=(viewPager)view.findViewById(R.id.viewPager);
List listFragments=new ArrayList();
添加(新选项卡fragmenta());
添加(新的TabFragmentB());
添加(新的TabFragmentC());
添加(新选项卡fragmented());
MyFragmentPagerAdapter MyFragmentPagerAdapter=新MyFragmentPagerAdapter(
getFragmentManager(),listFragments);
viewPager.setAdapter(myFragmentPagerAdapter);
viewPager.setOnPageChangeListener(此);
tabHost=(tabHost)view.findviewbyd(R.id.tabHost);
tabHost.setup();
String[]tabNames={“NUIA”、“HARANYA”、“OCEANIC”、“AURORIA”};
对于(int i=0;i父级){
}
});
Log.d(“FUCK”,String.valueOf(getActivity());
//不返回空值
//单选按钮
tipoPackRadioButtons=新的ArrayList();
用于(int id:IDS\U TIPOPACK\U无线电){
RadioButton tipoPackRadioBt=(RadioButton)v.findViewById(id);
添加(tipoPackRadioBt);
}
//放射组
RadioGroup RadioGroup TIPOPACK=新的RadioGroup(getActivity());
int count2=0;
而(计数2<6){
radiogroup tipopack.addView(tipoPackRadioButtons.get(count2));
count2++;
}
返回v;
}
公共静态选项卡FragmentaNewInstance(字符串文本){
TabFragmentA f=新的TabFragmentA();
Bundle b=新Bundle();
b、 putString(“msg”,文本);
f、 设置参数(b);
返回f;
}
/*选择公共静态int喷丝头;
选择公共静态无效设置针(选择int喷丝头){
TabFragmentA.spinnerSelected=spinnerSelected;
}*/
/*public void methodCalculate(){
整数计数=0;
而(计数<16){
开关(选择喷丝头){
个案数目:
打破
}
计数++;
}
}*/
}
在日志中显示

您正在尝试将已附加到另一个
视图的
单选按钮添加到
视图
。在这一行中,您可以从
视图
中获得
单选按钮
s:

RadioButton tipoPackRadioBt = (RadioButton) v.findViewById(id);
然后再次尝试将它们添加到
视图中:

radioGroupTipoPack.addView(tipoPackRadioButtons.get(count2));
1-如果您已经在
xml
中定义了
RadioButton
s,则无需再次添加它们,只需通过
findViewById
查找它们,并根据需要编辑它们->删除第二行

2-如果要在运行时动态定义
RadioButton
s,只需将
RadioGroup
保留为空,然后充气或创建
RadioButton
s并将其添加到组->删除第1行


备注:您也可以尝试从父视图中删除
RadioButton
S,并将其添加到另一个
视图中,但这很容易出错,除非您真的需要,否则您应该避免这样做。

执行Log.d(“操”,String.valueOf(getActivity());打印任何内容?如果我按原样运行它,它不会显示任何内容,因为它甚至没有打开。但是如果我删除部分RadioButton和RadioGroup代码,它会打开并正常工作,日志显示:D/FUCK:studio.com.archegemanager。MainActivity@ff67e04>但是如果我删除RadioButton和RadioGroup代码的一部分,它就会打开并正常工作——因此问题似乎与片段无关。您可以共享logcat吗?如果您也附加xml布局,我会在POSIT帮助中添加日志。我怀疑RadioGroup RadioGroup TiPopack是否会执行您希望它执行的任何操作,因为它未连接到任何视图。。
radioGroupTipoPack.addView(tipoPackRadioButtons.get(count2));