Android 片段类中AlertDialog.Builder(getActivity())上的NullPointerException
我有几个片段类可以通过Android 片段类中AlertDialog.Builder(getActivity())上的NullPointerException,android,android-fragments,Android,Android Fragments,我有几个片段类可以通过抽屉打开。在某些类中,按钮不起作用,而在其他类中,按钮起作用。我所有的密码都是一样的。我在AlertDialog.builder行中得到错误: public class NumbersActivity extends Fragment { private Spinner editAlarmSpinner; private Button deleteSelected, updateSelected, add; String prevAlarmName
抽屉打开。在某些类中,按钮不起作用,而在其他类中,按钮起作用。我所有的密码都是一样的。我在AlertDialog.builder
行中得到错误
:
public class NumbersActivity extends Fragment {
private Spinner editAlarmSpinner;
private Button deleteSelected, updateSelected, add;
String prevAlarmName;
DBAdapter db;
ArrayList<String> alarmsList, allList;
ArrayAdapter<String> dataAdapter;
final Context contextUpdate = getActivity();
public static Fragment newInstance(Context context) {
NumbersActivity f = new NumbersActivity();
return f;
}
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View v = inflater.inflate(R.layout.activity_numbers, container, false);
editAlarmSpinner = (Spinner) v.findViewById(R.id.editAlarmSpinner);
deleteSelected = (Button) v.findViewById(R.id.deleteButton);
updateSelected = (Button) v.findViewById(R.id.updateNumberButton);
add = (Button) v.findViewById(R.id.addNumberButton);
db = new DBAdapter(getActivity());
updateSpinner();
add.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
LayoutInflater layoutInflater = getActivity().getLayoutInflater();
View promptView = layoutInflater.inflate(R.layout.updatenumberdialog, null, false);
AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(contextUpdate);
alertDialogBuilder.setTitle(R.string.newAlarmDetails);
公共类编号活动扩展片段{
私有微调器;
专用按钮deleteSelected、updateSelected、add;
字符串名称;
DBAdapter-db;
ArrayList alarmsList,allList;
阵列适配器;
最终上下文上下文更新=getActivity();
公共静态片段newInstance(上下文){
NumbersActivity f=新的NumbersActivity();
返回f;
}
CreateView上的公共视图(布局、充气机、视图组容器、捆绑包保存状态){
视图v=充气机充气(R.布局.活动编号,容器,假);
editAlarmSpinner=(Spinner)v.findViewById(R.id.editAlarmSpinner);
deleteSelected=(按钮)v.findViewById(R.id.deleteButton);
updateSelected=(按钮)v.findViewById(R.id.updateNumberButton);
add=(按钮)v.findviewbyd(R.id.addNumberButton);
db=新的DBAdapter(getActivity());
updateSpiner();
add.setOnClickListener(新的OnClickListener(){
公共void onClick(视图v){
LayoutFlater LayoutFlater=getActivity().GetLayoutFlater();
View promptView=LayoutFlater.inflate(R.layout.updatenumberdialog,null,false);
AlertDialog.Builder alertDialogBuilder=新建AlertDialog.Builder(上下文更新);
alertDialogBuilder.setTitle(R.string.newAlarmDetails);
我做错了什么?为什么这在其他类上有效而在其他类上无效?contextUpdate
为null
,因为您在初始化之前调用了Fragment.getActivity
。您应该删除contextUpdate
变量,并调用Fragment.getActivitye> 相反。只需从
AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(contextUpdate);
到
或者初始化您的
contextUpdate = getActivity();
onCreateView内部。初始化contextUpdate=getActivity();
onCreateView内部。@antonismbrianides您会来的。很高兴帮助您!!
contextUpdate = getActivity();