Действительно новый для Android кодирования и Java.
У меня есть простой таймер обратного отсчета даты, который работает нормально, когда он находится на 1 экране, и я хочу, чтобы у меня был тот же код, но на 2-м экране.
1-й экран будет иметь метод onClick, который переместит вас на 2-й экран с обратным отсчетом даты.
Он работает на хоне, но таймер обратного отсчета отсутствует, он имеет всефон и текст, но нет обратного отсчета.
Код, указанный в displayfloridaactivity.java (он отличается от MainActivity.Java
Код не отображается с ошибками и будет работать на телефоне, но обратный отсчет даты
package com.example.countdown;
import androidx.appcompat.app.AppCompatActivity;
import android.content.Intent;
import android.os.Bundle;
import android.os.Handler;
import android.view.View;
import android.widget.EditText;
import android.widget.TextView;
import java.text.SimpleDateFormat;
import java.util.Date;
import static com.example.countdown.MainActivity.EXTRA_MESSAGE;
public class DisplayFloridaActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate( savedInstanceState );
setContentView( R.layout.activity_display_florida );
}
public void Florida(View view) {
Intent intent = new Intent( this, DisplayFloridaActivity.class );
EditText editText = (EditText) findViewById( R.id.editText );
String message = editText.getText().toString();
intent.putExtra( EXTRA_MESSAGE, message );
startActivity( intent );
}
public class DisplayFloridactivity extends AppCompatActivity {
private TextView txtDay, txtHour, txtMinute, txtSecond;
private TextView tvEventStart;
private Handler handler;
private Runnable runnable;
private Bundle savedInstanceState;
@Override
public void onCreate(Bundle savedInstanceState) {
this.savedInstanceState = savedInstanceState;
super.onCreate( savedInstanceState );
setContentView( R.layout.activity_main );
txtDay = (TextView) findViewById( R.id.txtDay );
txtHour = (TextView) findViewById( R.id.txtHour );
txtMinute = (TextView) findViewById( R.id.txtMinute );
txtSecond = (TextView) findViewById( R.id.txtSecond );
tvEventStart = (TextView) findViewById( R.id.tveventStart );
countDownStart();
}
public void countDownStart() {
handler = new Handler();
runnable = new Runnable() {
@Override
public void run() {
handler.postDelayed( this, 1000 );
try {
SimpleDateFormat dateFormat = new SimpleDateFormat(
"dd-MM-yyyy" );
Date futureDate = dateFormat.parse( "31-8-2020" );
Date currentDate = new Date();
if (!currentDate.after( futureDate )) {
long diff = futureDate.getTime()
- currentDate.getTime();
long days = diff / (24 * 60 * 60 * 1000);
diff -= days * (24 * 60 * 60 * 1000);
long hours = diff / (60 * 60 * 1000);
diff -= hours * (60 * 60 * 1000);
long minutes = diff / (60 * 1000);
diff -= minutes * (60 * 1000);
long seconds = diff / 1000;
txtDay.setText( "" + String.format( "%02d", days ) );
txtHour.setText( "" + String.format( "%02d",
hours ) );
txtMinute.setText( "" + String.format( "%02d",
minutes ) );
txtSecond.setText( "" + String.format( "%02d",
seconds ) );
} else {
tvEventStart.setVisibility( View.VISIBLE );
tvEventStart.setText( "Holiday is over, get a new
one booked ASAP!" );
textViewGone();
}
} catch (Exception e) {
e.printStackTrace();
}
}
};
handler.postDelayed( runnable, 1 * 1000 );
}
public void textViewGone() {
findViewById( R.id.LinearLayout1 ).setVisibility( View.GONE );
findViewById( R.id.LinearLayout2 ).setVisibility( View.GONE );
findViewById( R.id.LinearLayout3 ).setVisibility( View.GONE );
findViewById( R.id.LinearLayout4 ).setVisibility( View.GONE );
findViewById( R.id.textViewheader1 ).setVisibility( View.GONE );
findViewById( R.id.textViewheader2 ).setVisibility( View.GONE );
}
} }
нет ошибок в коде, который я вижу.