Я хочу увеличить число и показать его в TextView с помощью AlarmManager в определенное время дня, но он не работает. Приложение отлаживает и показывает 0, но не увеличивает число int. Пожалуйста, помогите, вот код.
public class MainActivity extends AppCompatActivity {
TextView tv;
int a = 3;
Calendar calendar = Calendar.getInstance();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
tv = (TextView) findViewById(R.id.tv);
MyAlarm alarm = new MyAlarm();
setAlarm(calendar.getTimeInMillis());
int g = alarm.i;
tv.setText(String.format("%d", g));
}
private void setAlarm(long time) {
calendar.setTimeInMillis(System.currentTimeMillis());
//getting the alarm manager
AlarmManager am = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
//creating a new intent specifying the broadcast receiver
Intent i = new Intent(this, MyAlarm.class);
//creating a pending intent using the intent
PendingIntent pi = PendingIntent.getBroadcast(this, 0, i, 0);
calendar.set(Calendar.HOUR_OF_DAY, 17);
calendar.set(Calendar.MINUTE, 55);
calendar.set(Calendar.SECOND, 0);
//setting the repeating alarm that will be fired every day
am.setRepeating(AlarmManager.RTC, time, AlarmManager.INTERVAL_FIFTEEN_MINUTES, pi);
Toast.makeText(this, "Alarm is set", Toast.LENGTH_SHORT).show();
}
}
трансляция здесь,
public class MyAlarm extends BroadcastReceiver {
int i;
@Override
public void onReceive(Context context, Intent intent) {
i++;
}
}
Как ишан? Пожалуйста, предложите мне
Конструктор по умолчанию - это то, как вы создаете объект своего класса.
Чтобы добавить конструктор по умолчанию, попробуйте в своем классе MyAlarm следующее:
MyAlarm(){
}
Также добавьте этот метод:
public int setI(){
i = i+1;
return i;
}
Вот как это должно выглядеть сейчас:
public class MyAlarm extends BroadcastReceiver{
int i;
MyAlarm(){
i=0;
}
public int setI(){
i = i+1;
return i;
}
@Override
public void onReceive(Context context,Intent intent) {
i++;
}
}
Теперь вызовите это в onCreate (), и он увеличит i. Ты можешь сказать
int g = myAlarm.setI();
в вашей функции setAlarm () или там, где вы хотите увеличить ее. g теперь будет увеличиваться. Надеюсь, это поможет!
Он будет увеличивать i каждый раз, когда вы его вызываете. Так что вы можете вызвать его в setAlarm ()
Можете ли вы сказать мне, как написать мою конструкцию будильника?
Да, просто добавьте код, который я дал в своем ответе, в свой класс MyAlarm
Хорошо, можешь конкретно сказать, какая у тебя проблема?
Возможно, это потому, что ваш метод внеклассный.
Какой метод находится вне класса?
Две верхние части кода - это как раз то, что должно быть в вашем классе. Их не должно быть снаружи. Таким образом, окончательный код должен выглядеть как последняя часть.
setA это было вне метода, а не класса.
Если у вас есть время, я хочу лично познакомиться с вами.
Извините, мы будем общаться через эти комментарии. Но setAlarm должен быть вне onCreate. Сейчас я немного занят, но я дам вам более подробный ответ, когда вернусь. А пока укажите все проблемы, с которыми вы сталкиваетесь. Какой ввод вы даете, какой результат вы получаете и ожидаемый результат. Спасибо.
Сайт предупредил меня, чтобы я больше не комментировал.
Ok. Может быть, мы сможем создать приватный чат по переполнению стека? Я рассмотрю это позже. Спасибо за ваше терпение.
Не нужен ли вам конструктор по умолчанию в вашем классе MyAlarm?