Падает приложение [закрыт]

153
27 марта 2019, 13:10

Ребята, не могу понять, почему падает приложение, помогите разобраться В задумке: оно должно выполнять два разных сценария в зависимости от того, наступило или нет определенное время. Код: MainActivity

    package ru.abrakadabra.timecat;
import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
public class MainActivity extends AppCompatActivity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        System.currentTimeMillis();
    }
    {
        int x = 1541394736; // задано конкретное время в UNIX
        if (x < System.currentTimeMillis()/10) { // вызываем системное время, делим его на 10 для получения UNIX
            Intent intent = new Intent(this, Activity1.class);
            startActivity(intent); // реализуем первый сценарий
            /* todo */
        } else {
            Intent intent = new Intent(this, Activity2.class);
            startActivity(intent); // реализуем второй сценарий
            /* todo */
        }
    }
}

Activity1

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
public class Activity1 extends AppCompatActivity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_1);
    }
}

Activity2

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
public class Activity2 extends AppCompatActivity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_2);
    }
}

activity_1.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:gravity="center_horizontal"
    android:layout_gravity="center_horizontal">
    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Это окно запустится, если СЦЕНАРИЙ 1" />
</LinearLayout>

activity_2.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:gravity="center_horizontal"
    android:layout_gravity="center_horizontal">
    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Это окно запустится, если СЦЕНАРИЙ 2" />
</LinearLayout>

Манифест:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="ru.abrakadabra.timecat">
    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">
        <activity android:name=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <activity android:name=".Activity1" />
        <activity android:name=".Activity2"></activity>
    </application>
</manifest>
Answer 1
package ru.abrakadabra.timecat;
import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
public class MainActivity extends AppCompatActivity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        System.currentTimeMillis();
    }

в этом отдельном блоке кода нет контекста - поскольку выполняется до его инициализации (считай в конструкторе) и поэтому startActivity не может быть выполнен.
Если Вам нужно чтобы этот код выполнился при запуске активности то уберите фигурные скобки до и после этого текста

    {  
        int x = 1541394736; // задано конкретное время в UNIX
        if (x < System.currentTimeMillis()/10) { // вызываем системное время, делим его на 10 для получения UNIX
            Intent intent = new Intent(this, Activity1.class);
            startActivity(intent); // реализуем первый сценарий
            /* todo */
        } else {
            Intent intent = new Intent(this, Activity2.class);
            startActivity(intent); // реализуем второй сценарий
            /* todo */
        }
    }
}

P.S. Unix Epoch считает время в целых секундах, а System.currentTimeMillis() возвращает время в милли-секундах - это 1/1000, а не 1/10.

READ ALSO
Не вызывается контекстное меню

Не вызывается контекстное меню

Элемент Listview не реагирует на длительное нажатие и не вызывается контекстное меню

138
Вычисление производной [закрыт]

Вычисление производной [закрыт]

Для алгоритма требуется найти производнуюНе подскажете, какой библиотекой или каким-то иным способом можно это сделать? В скриншоте первый...

183
Сохранить содержимое консоли в файл. Java [закрыт]

Сохранить содержимое консоли в файл. Java [закрыт]

Возможно ли как-то это осуществить? Например, программа сработала, консоль отобразила результат и пользователь введя букву "s" переносит...

149
Как использовать readInt из DataInputStream в Java?

Как использовать readInt из DataInputStream в Java?

Объясните, чем логически является возвращаемое значение метода readInt() из класса DataInputStream?

153