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();