2014-11-14 2 views
0

Я показываю окно оповещения с помощью службы.Отображение имени приложения в диалоговом окне

ShowAlert.java

public class ShowAlert extends Activity 
{ 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
    // TODO Auto-generated method stub 
    super.onCreate(savedInstanceState); 
    new AlertDialog.Builder(this) 
    .setTitle("Alert Title") 
    .setMessage("Alert Message") 
    .setPositiveButton(android.R.string.yes, new DialogInterface.OnClickListener() { 
     public void onClick(DialogInterface dialog, int which) { 

     } 
    }).show(); 
} 
} 

Внутри моей службы onStartCommand У меня есть поток таймера, который проходит каждый 30с. Я начинаю работу внутри таймера.

Timer myTimer = new Timer(); 
    myTimer.schedule(new TimerTask() {   
    @Override 
    public void run() { 
     Intent intent = new Intent(this,ShowAlert.class); 
     intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
     startActivity(intent); 
     } 
    }, 1000, 30000); 

В моем манифесте андроида я использовал тему диалога.

<activity android:name=".ShowAlert" 
android:theme="@android:style/Theme.Dialog"></activity> 

Я получил Dailog Box, как показано ниже.

Image 1

На щелчке "OK" Я вижу другое диалоговое окно со мной приложением имени следующего

Image 2

Может кто-нибудь мне помочь. Я не понимаю, почему я вижу второе диалоговое окно.

+0

Я думаю, проблема в том, что вы использовали тему.Dialog для своей деятельности и внутри этой деятельности. Вы начинаете AlertDialog. То, что вы видите как второе диалоговое окно, - это ваша деятельность сама .... – Opiatefuchs

+0

Я так и думал, но можете ли вы мне помочь, как решить эту проблему? –

ответ

2

Второй DialogBox не реальный диалог, это Ваша активность, потому что Вы устанавливаете тему внутри манифест как Theme.Dialog:

<activity android:name=".ShowAlert" 
    android:theme="@android:style/Theme.Dialog"></activity> 

Так что же происходит, Вы начинаете свою деятельность с намерением на службы и, начав действие, также откроется ваш AlertDialog, который вы создали внутри своей активности. Отменяя диалог, AlertDialog исчезает, и отображается ваше действие. Вы не указали какой-либо контент, поэтому отображается активность с размером небольшого диалогового окна, только с именем приложения.

Так, чтобы избавиться от этого, использование don't

 android:theme="@android:style/Theme.Dialog" 

Ваше Намерение как там сзади, показывающий активность как Диалог? Вы хотите только показать alertDialog? Затем вы можете либо сделать xml-макет, который выглядит так, как вы хотите, и setContentView (R.layout.yourLayout) внутри вашей деятельности, или вы можете установить пустой макет и показать только AlertDialog.

+0

есть ли способ не показывать какой-либо макет –

0

Добавить finish(), когда вы хотите закрыть диалоговое окно предупреждения.

public class ShowAlert extends Activity 
{ 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
    // TODO Auto-generated method stub 
    super.onCreate(savedInstanceState); 
    new AlertDialog.Builder(this) 
    .setTitle("Alert Title") 
    .setMessage("Alert Message") 
    .setPositiveButton(android.R.string.yes, new DialogInterface.OnClickListener() { 
     public void onClick(DialogInterface dialog, int which) { 

//Insert this new Code 
    alertDialog.dismiss(); //dismiss the alertdialog 
    yourActivity.this.finish(); //Destroy the Activity 


     } 
    }).show(); 
} 
}