Я работаю над проектом студии Android, пытающимся изменить изображение каждые полчаса, Я следовал примеру, но мне не повезло; это не приводит к возникновению ошибок, он просто doesen't работу, вот что я имею и то, что я пробовал:Изменение изображения в определенное время
public class MainActivity extends AppCompatActivity {
long startTime = 0;
Handler feed = new Handler();
Runnable runTimer = new Runnable()
{
@Override
public void run() {
Calendar now = Calendar.getInstance();
TextView output = (TextView) findViewById(R.id.output);
ImageView roto = (ImageView) findViewById(R.id.earthView);
Globals g = (Globals) getApplication();
int vision = 0;
int visionb = 0;
int hour = now.get(Calendar.HOUR);
int minute = now.get(Calendar.MINUTE);
String[] epos = g.getData56();
if (minute >= 30) {
visionb = 1;
}
if (minute < 30) {
visionb = 0;
}
long millis = System.currentTimeMillis() - startTime;
int seconds = (int) (millis/1000);
int minutes = seconds/60;
seconds = seconds % 60;
output.setText(String.format("%d:%02d", minutes, seconds));
vision = ((hour * 2) + visionb);
int resID = getResources().getIdentifier(epos[vision], "drawable", getPackageName());
if (roto != null) {
roto.setImageResource(resID);
feed.postDelayed(this, 500); // tried moving this around and changing the value from 0 - 3000
}
startTime = System.currentTimeMillis();
feed.postDelayed(runTimer, 500); // tried moving this around and changing the value from 0 - 3000
}
};
Чтобы проверить мой код, который я положил это в методе onUserInteraction и он работает прекрасно:
@Override
public void onUserInteraction() {
super.onUserInteraction();
final Globals g = (Globals) getApplication();
Calendar now = Calendar.getInstance();
ImageView roto = (ImageView) findViewById(R.id.earthView);
int vision = 0;
int visionb = 0;
int hour = now.get(Calendar.HOUR);
int minute = now.get(Calendar.MINUTE);
String[] epos = g.getData56();
if (minute >= 30) {
visionb = 1;
}
if (minute < 30) {
visionb = 0;
}
vision = ((hour * 2) + visionb);
int resID = getResources().getIdentifier(epos[vision], "drawable", getPackageName());
if (roto != null) {
roto.setImageResource(resID);
}
}
Итак, я предполагаю, что я что-то делаю неправильно, Кто-нибудь знает, что я делаю неправильно или не хватает?
Спасибо за помощь Landice Это рабочий результат, дающий мне как часы, так и каждые полчаса дня меняет мое изображение (всего 48 изображений), еще раз спасибо за помощь!
long startTime = 0;
{
final Handler feed = new Handler();
final Runnable runTimer = new Runnable() {
@Override
public void run() {
Calendar now = Calendar.getInstance();
TextView output = (TextView) findViewById(R.id.output);
ImageView roto = (ImageView) findViewById(R.id.earthView);
Globals g = (Globals) getApplication();
int vision = 0;
int visionb = 0;
int second = now.get(Calendar.SECOND);
int hour = now.get(Calendar.HOUR);
int minute = now.get(Calendar.MINUTE);
String[] epos = g.getData56();
if (minute >= 30) {visionb = 1;}
if (minute < 30) {visionb = 0;}
output.setText(String.format(hour + ":" + minute + ":" + second));
feed.postDelayed(this, 0);
if (minute == 30 || minute == 0) {vision = ((hour * 2) + visionb);
int resID = getResources().getIdentifier(epos[vision], "drawable", getPackageName());
if (roto != null) {
roto.setImageResource(resID);
}
}
startTime = System.currentTimeMillis();
}
};
feed.postDelayed(runTimer,1000);
}
Спасибо да, что это то, что я сделал, я не scedual первый post и имел handler.post (runTimer) в неправильном месте – Wraithious