2016-12-22 1 views
-1

У меня есть класс, который расширяет встроенный класс диалога, и я хочу получить доступ к 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"); 
} 
+0

Put context = a; в конструкторе –

ответ

3

Вы пропускаете строку контекст = а; Используйте приведенный ниже код. Я назначил значение для контекста в конструкторе.

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

    } 
} 
0

Вы не инициализируете поле context. Попробуйте это в конструкторе:

this.context = a; 
0

Вы не инициализировали контекстное использование этого. Это может помочь

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

Вы просто ничего не пишете в переменную context. Затем вы пытаетесь использовать его.
Вместо объявления вашей собственной переменной вы можете использовать this.getContext() внутри Dialog