Java Android: Como impedir que minha caixa de diálogo mostre brevemente o MainActivity appname quando o diálogo é fechado?

8

Sou bastante novo no desenvolvimento do Android e criei meu primeiro aplicativo "real" que faz o seguinte:

  • Lança MainActivity
  • MainActivity processa Dados Extra e exibe um ViewDialogque se estende Dialog. ViewDialogpossui um showDialog()método que faz o seguinte para configurar e exibir o Dialog:

    protected void showDialog(final Activity activity)
    {
        dialog = new Dialog(activity);
        dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
        dialog.setCancelable(false);
        dialog.setContentView(dialog_layout);
    
        // Set background color of the dialog
        ConstraintLayout currentLayout = (ConstraintLayout) dialog.findViewById(R.id.Dialog);
    
        // setup of views etc ...
    
        // Finally dislay `Dialog`
        dialog.show();
    
        // Method called to start a `DialogTimer` which extends `CountDownTimer`
    }
    
  • MainActivity mostra o ViewDialogseguinte:

     public class MainActivity extends AppCompatActivity {
         private static Context appContext;
         private static ViewDialog notify;
    
         protected void onCreate(Bundle savedInstanceState) {
    
             // methods and processing etc...        
    
             // time to display dialog 
             notify = new ViewDialog(mParameters, mThemeHandler );
    
             // ******************** Show dialog box *******************
             notify.showDialog(activity: this);   // showDialog just calls `Dialog.show()`
             notify.ApplyTheme();
         }
    
  • Quando o cronômetro expira ou o usuário pressiona um botão, ele ViewDialogé fechado e o aplicativo é finalizado com o seguinte código:

        mButton1.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            CancelTimer();
            activity.finishAndRemoveTask();
            dialog.dismiss();
    

O problema é que, quando o ViewDialogitem é descartado, ocasionalmente posso ver o que parece ser uma mensagem que está exibindo as atividades android:labelconfiguradas no arquivo AndroidManifest.

Vídeo do que está acontecendo

Não sei por que isso acontece, mas presumo que ele esteja exibindo algum item do MainActivitylayout quando o ViewDialogfechamento usar seu próprio dialog_layoutarquivo de layout.

Eu brinquei com tantas coisas diferentes e mudei o código / layouts etc. e não consegui encontrar meu erro.

Quais são algumas dicas e sugestões que me ajudarão a corrigir isso? Fico feliz em fornecer mais detalhes, se necessário.

Os arquivos de layout e manifesto estão aqui:

Quimera
fonte
2
Quando você diz, “exibindo uma mensagem”, o que exatamente você está vendo?
Flopshot 5/10/19
2
Você pode postar qualquer captura de tela da mensagem que você vê depois que o Dialog é descartado?
Hamza
Também no seu arquivo activity_main.xml, você colocou a largura e a altura do layout principal 0dp. Basta torná-lo mach_parent para que ele possa se expandir por toda a tela.
Hamza
1
Telefone e tablets @flopshot com Android 5.1 e 9.0. BTW, eu também estou em Las Vegas .... :-)
Chimera
1
passar por este link . espero que você vai encontrar algo de útil
Alfaizkhan

Respostas:

3

Você pode conseguir isso definindo o atributo android: theme como @android: style / Theme.NoTitleBar no seu elemento no seu AndroidManifest.xml, como este:

<activity android:name=".Activity"
    android:label="@string/app_name"
    android:theme="@android:style/Theme.NoTitleBar">
    <intent-filter>
        <action android:name="android.intent.action.MAIN" />
        <category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>
</activity>
Alfaizkhan
fonte
Obrigado. Vou tentar.
Quimera
Tentei isso também. Não funcionou. Obrigado por tentar embora. :-)
Quimera
Isso "funciona", mas também exibe a janela principal de atividade antes de exibir a caixa de diálogo. Eu quero que o aplicativo exiba apenas a caixa de diálogo ...
Quimera
2

O código que você postou não é suficiente para descobrir por que isso está acontecendo, mas há uma solução universal para não ver o Título da Atividade (que é definido no campo do manifesto do rótulo).

Declare em seu styles.xml um novo tema como

<style name="AppTheme.NoActionBar" parent="Theme.AppCompat.Light.NoActionBar">
        <!-- Customize your theme here. -->
        <item name="android:windowContentOverlay">@null</item>
</style>

e depois disso, faça com que seja o tema da sua atividade como este

 <activity
           ...
           android:name="boha.notify.MainActivity"
           android:theme="@style/AppTheme.NoActionBar">
           ...
</activity>

Embora eu não tenha 100% de certeza (porque esse comportamento pode ser alterado em um código real de sua atividade), acho que pode ajudar.

Eu espero que isso ajude.

Pavlo Ostasha
fonte
Obrigado Paul. Vou tentar.
Quimera
Paul, eu tentei isso e não funcionou. Eu notei que, quando defini o título da atividade, no código usando setTitle()uma string muito longa, pude ver muito claramente que a pequena mensagem como "brinde" exibida quando a caixa de diálogo fecha é o título da atividade principal. Vou linkar para um vídeo mostrando o que está acontecendo em breve.
Quimera
Paul, também o que mais do meu código você precisa ver? Não consigo mostrar todo o código. Talvez eu crie um exemplo mínimo reproduzível para postar.
Quimera
2

Acontece que se eu mudar:

public class MainActivity extends AppCompatActivity {

para

public class MainActivity extends Activity {

o problema desaparece. Não sei por que, mas eu aceito.

Quimera
fonte
2
notify.setOnDissmissListener({CancelTimer()
    activity.finishAndRemoveTask()
    dialog.dismiss()})
Shahriyar Aghajani
fonte
1
Obrigado. Vou tentar isso também.
Quimera
1
Obrigado novamente, eu tentei. Não fez diferença. Eu devo estar fazendo algo fundamentalmente errado.
Quimera