Я не могу открыть приложение после установки AndroidJAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Я не могу открыть приложение после установки Android

Сообщение Anonymous »

Я работаю над своим первым приложением для Android для учета рабочего времени.
MainActivity.java:

Код: Выделить всё

package com.example;
import com.example.work.R;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
import androidx.appcompat.app.AppCompatActivity;

import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Locale;

public class MainActivity extends AppCompatActivity {

private TextView startTimeTextView, endTimeTextView, todayTimeTextView, weekTimeTextView;
private Button startWorkButton, endWorkButton, resetWeekButton, showHelpButton;
private boolean working = false;
private long startTime = 0, endTime = 0;
private float[] workTimes = new float[7];  // Array to store weekly work times

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

startTimeTextView = findViewById(R.id.startTimeTextView);
endTimeTextView = findViewById(R.id.endTimeTextView);
todayTimeTextView = findViewById(R.id.todayTimeTextView);
weekTimeTextView = findViewById(R.id.weekTimeTextView);
startWorkButton = findViewById(R.id.startWorkButton);
endWorkButton = findViewById(R.id.endWorkButton);
resetWeekButton = findViewById(R.id.resetWeekButton);
showHelpButton = findViewById(R.id.showHelpButton);

startWorkButton.setOnClickListener(view -> startWork());
endWorkButton.setOnClickListener(view -> endWork());
resetWeekButton.setOnClickListener(view -> resetWeek());
showHelpButton.setOnClickListener(view -> showHelp());

loadWorkTimes();  // Load work times from storage

updateUI();  // Update UI with loaded data
}

private void startWork() {
if (working) {
startTime = System.currentTimeMillis();  // Record start time in milliseconds
startTimeTextView.setText("Start Time: " + formatTime(startTime));
} else {
startTime = System.currentTimeMillis();  // Begin initial work session
startTimeTextView.setText("Start Time: " + formatTime(startTime));
endTime = 0;  // Reset end time on new session
endTimeTextView.setText("End Time: ");
}
working = true;  // Set working status to true
saveWorkingStatus();  // Save working status
updateUI();
}

private void endWork() {
if (!working) {
endTimeTextView.setText("You haven't started working yet!");
return;
}
endTime = System.currentTimeMillis();  // Record end time in milliseconds
float workDuration = (endTime - startTime) / 3600000.0f;  // Convert milliseconds to hours
int dayOfWeek = getDayOfWeek();
workTimes[dayOfWeek] += workDuration;  // Add work duration to the respective day
saveWorkTimes();  // Save updated work times
updateUI();
working = false;  // Reset working status
saveWorkingStatus();  // Save working status
endTimeTextView.setText("End Time: " + formatTime(endTime));
}

private void resetWeek() {
for (int i = 0; i < workTimes.length; i++) {
workTimes[i] = 0;  // Reset work times to zero
}
saveWorkTimes();  // Save reset work times
updateUI();
}

private void showHelp() {
// Show help dialog or message
new android.app.AlertDialog.Builder(this)
.setTitle("Help")
.setMessage("All commands:\n- Start Work: Start working session.\n- End Work: End working session.\n- Reset Week: Reset weekly work times.")
.setPositiveButton("OK", null)
.show();
}

private void updateUI() {
StringBuilder weekText = new StringBuilder();
weekText.append("Today: ").append(String.format(Locale.US, "%.3fh", workTimes[getDayOfWeek()])).append("\n");
float weekTotal = 0;
for (int i = 0; i < 7;  i++) {
weekText.append("Day ").append(i).append(": ").append(String.format(Locale.US, "%.3fh", workTimes[i])).append("\n");
weekTotal += workTimes[i];
}
weekText.append("Week: ").append(String.format(Locale.US, "%.3fh", weekTotal)).append("\n");
weekTimeTextView.setText(weekText.toString());

if (startTime > 0) {
startTimeTextView.setText("Start Time: " + formatTime(startTime));
}
if (endTime > 0) {
endTimeTextView.setText("End Time: " + formatTime(endTime));
}
}

private String formatTime(long timeInMillis) {
SimpleDateFormat sdf = new SimpleDateFormat("HH:mm", Locale.US);
return sdf.format(new Date(timeInMillis));
}

private int getDayOfWeek() {
return (int) ((System.currentTimeMillis() / (1000 * 60 * 60 * 24)) % 7);  // Calculate day of week from milliseconds
}

private void saveWorkTimes() {
getSharedPreferences("workTimesPrefs", MODE_PRIVATE).edit().putString("workTimes", serializeWorkTimes()).apply();
}

private String serializeWorkTimes() {
StringBuilder sb = new StringBuilder();
for (float time : workTimes) {
sb.append(time).append(",");
}
return sb.toString();
}

private void loadWorkTimes() {
String workTimesString = getSharedPreferences("workTimesPrefs", MODE_PRIVATE).getString("workTimes", "0,0,0,0,0,0,0");
String[] workTimesArray = workTimesString.split(",");
for (int i = 0; i < workTimesArray.length; i++) {
workTimes[i] = Float.parseFloat(workTimesArray[i]);
}
}

private void saveWorkingStatus() {
getSharedPreferences("workingPrefs", MODE_PRIVATE).edit().putBoolean("working", working).apply();
}
}
activity_main.xml: AndroidManifest.xml Я не получаю никаких ошибок и могу успешно создать apk-файл. Однако, когда я устанавливаю его на свое устройство Android, я не вижу возможности открыть его. Приложение установлено правильно, и я даже могу найти его в настройках->приложения...
Структура папок
app/java/com.example/ work/MainActivity.java
app/res/layout/activity_main.xml
app/manifests/AndroidManifest.xml
Не могли бы вы помочь мне это исправить? Я никогда не создавал приложения с помощью Android Studio, так что для меня все в новинку? Буду очень благодарен.

Подробнее здесь: https://stackoverflow.com/questions/786 ... it-android
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»