android中要分段的活动代码

android中要分段的活动代码,android,android-fragments,navigation-drawer,slidingdrawer,Android,Android Fragments,Navigation Drawer,Slidingdrawer,我有两个应用程序运行正常。现在我已经开发了一个新的应用程序,它基本上是一个导航抽屉,我正在尝试将其他应用程序都整合到一个片段中。当我试图修改其中一个应用程序的mainactivity的代码时,片段崩溃了。没有警告,没有错误,只是崩溃 我在这里给大家留下了片段的一些代码(我正在剪切一些行,我确信这不是问题): 公共类SFragment扩展片段{ 公共SFragment(){} @凌驾 创建视图上的公共视图(布局、充气机、视图组容器、, Bundle savedInstanceState){ 视图根

我有两个应用程序运行正常。现在我已经开发了一个新的应用程序,它基本上是一个导航抽屉,我正在尝试将其他应用程序都整合到一个片段中。当我试图修改其中一个应用程序的mainactivity的代码时,片段崩溃了。没有警告,没有错误,只是崩溃

我在这里给大家留下了片段的一些代码(我正在剪切一些行,我确信这不是问题):

公共类SFragment扩展片段{
公共SFragment(){}
@凌驾
创建视图上的公共视图(布局、充气机、视图组容器、,
Bundle savedInstanceState){
视图根视图=充气机。充气(R.layout.fragment_s,container,false);
rdGroup1=(RadioGroup)getView().findviewbyd(R.id.RadioGroup 1);
rdGroup2=(RadioGroup)getView().findviewbyd(R.id.RadioGroup 2);
cBox1=(复选框)getView().findViewById(R.id.especCB);
按钮=(按钮)getView().findViewById(R.id.button1);
list=(ListView)getView().findViewById(R.id.listView1);
返回rootView;
}
公共字符串项值;
公共字符串[]值;
私有int-specp=0;
私有整数游标=0;
私有int cuatri=0;
私有列表视图列表;
私人放射组rdGroup1;
私人放射组rdGroup2;
私有复选框cBox1;
私人按钮;
阵列适配器;
DatabaseHandler db=新的DatabaseHandler(getActivity());
@凌驾
已创建ActivityState上的公共无效(Bundle savedInstanceState){
super.onActivityCreated(savedInstanceState);
字符串[]值=新字符串[]{};
适配器=新的ArrayAdapter(getActivity().getApplicationContext(),
android.R.layout.simple_list_item_1,android.R.id.text1,值);
list.setAdapter(适配器);
list.setOnItemClickListener(新的OnItemClickListener(){
@凌驾
public void onItemClick(AdapterView父级、视图、,
内部位置,长id){
//ListView单击的项目值
itemValue=(字符串)list.getItemAtPosition(位置);
//显示警惕
Toast.makeText(getActivity(),itemValue,Toast.LENGTH_LONG).show();
意图i=新意图(getActivity().getApplicationContext(),VistaAsig.class);
i、 putExtra(“itemValue”,itemValue);
Log.v(“MActivity onCreate”、“onItemClicklist Intent OK”);
星触觉(i);
Log.v(“mactivityoncreate”、“onItemClicklist Start OK”);
}
});
rdGroup1.setOnCheckedChangeListener(新的OnCheckedChangeListener(){
@凌驾
检查更改后的公共无效(RadioGroup组,int checkedId){
//TODO自动生成的方法存根
cBox1.setEnabled(true);
if(checkedId==R.id.radio1){
/*没有特别的干草*/
curso=1;cBox1.setEnabled(false);
}else if(checkedId==R.id.radio2){
/*没有特别的干草*/
curso=2;cBox1.setEnabled(false);
}else if(checkedId==R.id.radio3){
curso=3;
}else if(checkedId==R.id.radio4){
curso=4;
}
如果((curso!=0)和(&(cuatri!=0)){button.setEnabled(true);}
}
});
rdGroup2.setOnCheckedChangeListener(新的OnCheckedChangeListener(){
@凌驾
检查更改后的公共无效(RadioGroup组,int checkedId){
//TODO自动生成的方法存根
如果(checkedId==R.id.radio11){
cuatri=1;
}else if(checkedId==R.id.radio12){
cuatri=2;
}
如果((curso!=0)和(&(cuatri!=0)){button.setEnabled(true);}
}
});
cBox1.setOnCheckedChangeListener(新建CompoundButton.OnCheckedChangeListener(){
@凌驾
已更改公共void(复合按钮复选框,布尔值已选中){
如果(espe==0)espe=1;如果(espe==1)espe=0;
}
});
addData();
}
在这行中

rdGroup1 = (RadioGroup)getView().findViewById(R.id.radioGroup1);
rdGroup2 = (RadioGroup)getView().findViewById(R.id.radioGroup2);
cBox1 = (CheckBox)getView().findViewById(R.id.especCB);
button = (Button)getView().findViewById(R.id.button1);
list = (ListView)getView().findViewById(R.id.listView1);
getView()
更改为
rootView


getView()
检索您在
onCreateView
中返回的视图,但您仍然在
onCreateView
中,因此它返回null,给您一个NullPointerException,使您的应用程序崩溃请尝试以下操作:

更改:

adapter = new ArrayAdapter<String>(getActivity().getApplicationContext(),
                  android.R.layout.simple_list_item_1, android.R.id.text1, values);

如果您在Logcat中没有发现任何错误,那么您应该使用断点查看它何时中断。

多亏了Jorge Alfaro,我发现答案如下: 您应该像我一样在每个方法外部创建对象,并在
onCreateView
内部初始化对象。因此,在第一部分中,您应该:

DatabaseHandler db;
和内部
onCreateView

db = new DatabaseHandler(getActivity());

没有日志很难调试,但我认为应该移动这一行
DatabaseHandler db=newdatabasehandler(getActivity());
onCreateView
这是不可能的,它在代码的某些部分给了我很多错误我一直在使用日志,显然问题来自
DatabaseHandler db=newdatabasehandler(getActivity())
但它不允许我将此更改为
onCreateView
:我能做什么?我尝试了,但没有任何更改…无论如何,谢谢你
DatabaseHandler db;
db = new DatabaseHandler(getActivity());