在对话框类中使用的Context处的空指针异常

时间:2016-12-22 07:51:40

标签: android nullpointerexception dialog

我有一个类thate扩展了一个内置的对话框类,我想在其中访问sharedprefence,但此时有空指针异常。

这是我的代码

public class DialogCancelOrder extends Dialog {

    Context context;

    public DialogCancelOrder(Context a, String orderid) {
        super(a);
        this.orderid = orderid;
    }

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        sp = context.getSharedPreferences("afewtaps", Context.MODE_PRIVATE);

        face = Typeface.createFromAsset(context.getAssets(), "fonts/Nunito-Regular.ttf");
        face1 = Typeface.createFromAsset(context.getAssets(), "fonts/Rupee_Foradian_2.ttf");
}

4 个答案:

答案 0 :(得分:3)

您错过了 context = a; 这一行使用以下代码。我已经在构造函数中为上下文赋值。

 public class DialogCancelOrder extends Dialog {

    Context context;

    public DialogCancelOrder(Context a, String orderid) {
        super(a);
        this.orderid = orderid;
        this.context = a;

    }

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        sp = context.getSharedPreferences("afewtaps", Context.MODE_PRIVATE);

        face = Typeface.createFromAsset(context.getAssets(), "fonts/Nunito-Regular.ttf");
        face1 = Typeface.createFromAsset(context.getAssets(), "fonts/Rupee_Foradian_2.ttf");

    }
}

答案 1 :(得分:0)

您没有初始化context字段。在构造函数中尝试这个:

this.context = a;

答案 2 :(得分:0)

你没有初始化上下文使用它。这可能会有所帮助

public DialogCancelOrder(Context a, String orderid) {
               super(a);
                      this.orderid = orderid;
                      context=a;
                        }

答案 3 :(得分:0)

您根本不会在context变量中写入任何内容。然后你试着用它。
您可以在this.getContext()

中使用Dialog,而不是声明自己的变量