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