как показать представления и макет с классом, расширяющим приложение - PullRequest
0 голосов
/ 19 июня 2020

Мне удавалось показывать тост каждый раз, когда мое приложение запускалось, используя приведенный ниже код:

<application
        android:name=".Startup"
...
public class Startup extends Application {

    private Context context;

    @Override
    public void onCreate() {
        super.onCreate();

        Toast.makeText(this, "Startup", Toast.LENGTH_SHORT).show();

        Activity a = (Activity) getApplicationContext();
        a.setContentView(R.layout.startup_layout);

    }
}

, но я также хочу показать некоторые представления во время запуска приложения, и я не нашел какие-нибудь материалы о том, как это сделать? Я добавляю этот макет (чтобы показать некоторые представления) и привязываю его к этому классу, но приложение вылетало из-за java.lang.ClassCastException

привязки макета к классу:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <Button
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="try" />

</RelativeLayout>

Итак, мои вопросы являются: 1. Как отображать представления или макет с помощью этого класса? 2. Как с помощью этого класса отображать и контролировать некоторые представления в других действиях?

Я все еще изучаю android и не знаю, как это делать: (

Заранее спасибо.

1 Ответ

1 голос
/ 19 июня 2020

Класс приложения не является классом для отображения представлений, вместо этого в этом классе вы можете инициализировать некоторые библиотеки, фреймворки внедрения зависимостей и т. Д. c. Для отображения экранов вы должны создать Activity или Fragment

Вы должны удалить этот код из класса Application:

Activity a = (Activity) getApplicationContext();
a.setContentView(R.layout.startup_layout);

В файле AndroidManifest. xml вы должны определить запуск Activity, а в Activity вы должны установить представление содержимого:

AndroidManifest. xml:

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
          package="com.example">
    <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="com.example.MainActivity"> // package name where you have MainActivity
            <intent-filter>
                <action android:name="android.intent.action.MAIN"/>
                <category android:name="android.intent.category.LAUNCHER"/>
            </intent-filter>
        </activity>
    </application>

</manifest>

MainActivity:

class MainActivity : AppCompatActivity() {

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.startup_layout)
    }

}

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...