سلام دوستان . من در یک کلاس که از Broadcastreciver ارپ بری میکنه ...یک Interface نوشتم که باید از بیرون کلاس مقداردهی بشه ... اینکار رو با Setter و ... امتحان کردم ...ولی بعد از اینکه میاد داخل OnRecieve() مقدار اون Null میشه و منجر به Crash برنامه میشه ...هر جور امتحان کردم مقدار نال میشه آیا راه دیگه ای دارید؟ راهنماییم کنید لطفا
public class CheckRequestAnswerReciever extends BroadcastReceiver {
private AnswerRequestType answerRequestType;
private ApiManager apiManager;
RequestSharedPref requestSharedPref = new RequestSharedPref();
public void setAnswerRequestType(AnswerRequestType answerRequestType) {
this.answerRequestType = answerRequestType;
}
@Override
public void onReceive(Context context, Intent intent) {
requestSharedPref.load();
if (requestSharedPref.isAccept() == false && requestSharedPref.isReject() == false) {
//it means we are in none state
answerRequestType.onNoneRequest("None");
}
}
public interface AnswerRequestType {
public void onNoneRequest(String type);
}
}
public class RequestingReciever extends BroadcastReceiver implements ApiManager.onResponseListener,
CheckRequestAnswerReciever.AnswerRequestType {
public RequestingReciever() {
}
private ApiManager apiManager;
private Activity activity;
private Context context;
private SharedPref sharedPref;
private static RequestListener requestListener;
public void setRequestListener(RequestListener requestListener) {
this.requestListener = requestListener;
}
@Override
public void onReceive(Context context, Intent intent) {
this.context = context;
activity = new MainAccountActivity();
apiManager = new ApiManager();
apiManager.setResponseListener(this);
sharedPref = new SharedPref(apiManager.deliveryPartner, apiManager.deliveryPartner.deliveryBike, context);
sharedPref.loadData();
sendCheckDeliveryRequest();
}
private void checkNoneWorker() {
CheckRequestAnswerReciever checkRequestAnswerReciever=new CheckRequestAnswerReciever();
checkRequestAnswerReciever.setAnswerRequestType(th is);
Intent requestIntent = new Intent(context, CheckRequestAnswerReciever.class);
PendingIntent pendingIntent = PendingIntent.getBroadcast(context, 2, requestIntent, PendingIntent.FLAG_UPDATE_CURRENT);
AlarmManager am = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
am.set(AlarmManager.RTC_WAKEUP, System.currentTimeMillis() + 50000, pendingIntent);//it counts 50 seconds...
}