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:


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>

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.


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.


2
notify.setOnDissmissListener({CancelTimer()
    activity.finishAndRemoveTask()
    dialog.dismiss()})

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
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.