Отображение тоста без окна - PullRequest
0 голосов
/ 08 февраля 2019

Мое приложение необычное: при запуске оно просто отображает сообщение Toast.То есть я должен нажать на иконку запуска, увидеть тост и все.Но после запуска у меня меньше секунды, я вижу главное окно приложения, которое вообще не должно отображаться - только тост!Он отображается и сразу же закрывается.Я использую

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    Toast.makeText(this, "This is my Toast message!",
            Toast.LENGTH_LONG).show();
    finish();
}

Что мне нужно изменить?

Ответы [ 3 ]

0 голосов
/ 08 февраля 2019

Вы сказали, что не хотите использовать полупрозрачную активность, но, похоже, это лучший способ сделать это:

  1. В своем манифесте установите тему деятельности на Theme.Translucent.NoTitleBar.

    <application
        android:theme="@android:style/Theme.Translucent.NoTitleBar"
        ...
        ...>
    
  2. Не связывайтесь с макетом для своей Деятельности и не звоните setContentView().

  3. В своей ДеятельностиonCreate(), Покажите свой тост сейчас.
  4. Выйдите из действия с помощью finish().

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        //setContentView(R.layout.activity_main);
        Toast.makeText(this, "Hello", Toast.LENGTH_SHORT).show();
        finish();
    }
    

Другими словамиваша активность не должна быть видимой; Будет отображаться Just Toast.

0 голосов
/ 08 февраля 2019
                LayoutInflater inflater = getLayoutInflater();
            View layout = inflater.inflate(R.layout.custom_toast_layout, (ViewGroup) findViewById(R.id.custom_toast_layout));
            TextView text = layout.findViewById(R.id.tv_custom_toast);
            text.setText("You have not marked any favourites");
            Toast toast = new Toast(this);
            toast.setGravity(Gravity.BOTTOM, 0, 50);
            toast.setDuration(Toast.LENGTH_SHORT);
            toast.setView(layout);
            toast.show();

Создайте пользовательский тост. Здесь Custom_toast_layout должен иметь текстовый фон, который должен быть прозрачным.

0 голосов
/ 08 февраля 2019

Это определенно очень странное приложение.

Хотя вы можете запустить Toast из любого места, где у вас есть доступ к Context, вам определенно необходимо использовать Activity из-за необходимости предоставления значка запуска на домашнем экране.

Однако по умолчанию, даже если макет не создан или не установлен, окно «Деятельность» все равно будет отображаться.Это типичное поведение, потому что поведение имеет свои собственные элементы, и Layout просто добавляется в это окно Activity по умолчанию.

Но это не значит, что вы не можете делать то, что хотите.

Вам просто нужно, чтобы это окно активности не отображалось.Это чаще всего делается с помощью стилей.

Чтобы сделать это, вы можете использовать эту тему:

android:theme="@android:style/Theme.Translucent.NoTitleBar.Fullscreen"

Просто добавьте эту тему в свою активность внутри вашего 'Manifest.xml'

Существуют и другие полупрозрачные темы.Вы можете попробовать, если вы не хотите использовать версию FullScreen No Title Bar.

...