Как использовать диспетчер сигналов тревоги для увеличения int

Я хочу увеличить число и показать его в 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?

Ishaan Javali 08.11.2018 15:29

Как ишан? Пожалуйста, предложите мне

m bilal 08.11.2018 15:35

Конструктор по умолчанию - это то, как вы создаете объект своего класса.

Ishaan Javali 08.11.2018 15:36
1
3
26
1

Ответы 1

Чтобы добавить конструктор по умолчанию, попробуйте в своем классе 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 ()

Ishaan Javali 08.11.2018 15:48

Можете ли вы сказать мне, как написать мою конструкцию будильника?

m bilal 08.11.2018 15:50

Да, просто добавьте код, который я дал в своем ответе, в свой класс MyAlarm

Ishaan Javali 08.11.2018 15:51

Хорошо, можешь конкретно сказать, какая у тебя проблема?

Ishaan Javali 11.11.2018 17:55

Возможно, это потому, что ваш метод внеклассный.

m bilal 11.11.2018 17:56

Какой метод находится вне класса?

Ishaan Javali 11.11.2018 17:56

Две верхние части кода - это как раз то, что должно быть в вашем классе. Их не должно быть снаружи. Таким образом, окончательный код должен выглядеть как последняя часть.

Ishaan Javali 11.11.2018 17:57

setA это было вне метода, а не класса.

m bilal 11.11.2018 18:02

Если у вас есть время, я хочу лично познакомиться с вами.

m bilal 11.11.2018 18:09

Извините, мы будем общаться через эти комментарии. Но setAlarm должен быть вне onCreate. Сейчас я немного занят, но я дам вам более подробный ответ, когда вернусь. А пока укажите все проблемы, с которыми вы сталкиваетесь. Какой ввод вы даете, какой результат вы получаете и ожидаемый результат. Спасибо.

Ishaan Javali 11.11.2018 18:13

Сайт предупредил меня, чтобы я больше не комментировал.

m bilal 11.11.2018 18:23

Ok. Может быть, мы сможем создать приватный чат по переполнению стека? Я рассмотрю это позже. Спасибо за ваше терпение.

Ishaan Javali 11.11.2018 19:02

Другие вопросы по теме