2013-05-24 7 views
0

Я хочу, чтобы показать диалог, когда я на главном экране после 10 секунд,шоу Диалог Android на главном экране

и я изменить свою тему в Theme.Dialog,

И теперь, я успешно совать его когда я нажал Back Key на главный экран.

Но мой вопрос заключается в том, что после того, как я нажал клавишу Home и перейти на главный экран,

диалог не всплывал после 10s,

Однако, когда я открываю мое приложение,

I обнаружил, что он появился там.

Итак, может кто-нибудь сказал мне, как решить эту проблему?

это мой код (я использую два вида деятельности):

Первая активность:

public class MainActivity extends Activity {  
private Button bt_dialog; 
AlertDialog.Builder builder; 
AlertDialog mDialog; 
Intent i = new Intent(); 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    bt_dialog = (Button) findViewById(R.id.button1); 
    i.setClass(MainActivity.this, DialogActivity.class); 
    i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);  
      //click button and show the dialog after 10s 
    bt_dialog.setOnClickListener(new Button.OnClickListener() { 

    @Override 
    public void onClick(final View view) { 
     CountDownTimer dlgCountDown; 
     dlgCountDown = new CountDownTimer(10000, 1000){ 
     public void onTick(long millisUntilFinished) { 
     } 
     public void onFinish(){ 
      startActivity(i); 
     } 
     }.start(); 
     } 
    }); 
} 

Вторая активность:

public class DialogActivity extends Activity{ 
AlertDialog.Builder builder; 
AlertDialog mDialog; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    requestWindowFeature(Window.FEATURE_NO_TITLE); 
    setContentView(R.layout.activity_dialog); 
    String dialogText = "dialog text"; 
     TextView txt = (TextView) findViewById(R.id.textView1); 
     txt.setText(dialogText); 
     Button dismissbutton = (Button) findViewById(R.id.button1); 
     dismissbutton.setOnClickListener(new OnClickListener() { 

     @Override 
     public void onClick(View v) { 
      DialogActivity.this.finish(); 
     } 
    }); 
    } 

И это мой Manifest код:

<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW"/> 
<application 
    android:allowBackup="true" 
    android:icon="@drawable/ic_launcher" 
    android:label="@string/app_name" 
    android:theme="@style/AppTheme" > 
    <activity 
     android:name="com.example.testdialog.MainActivity" 
     android:theme="@android:style/Theme" 
     android:label="@string/app_name" > 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 
      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 
    </activity> 

    <activity 
     android:name="com.example.testdialog.DialogActivity" 
     android:theme="@android:style/Theme.Dialog"> 
    </activity> 

+0

использовать onResume метод и переопределить его. – MDMalik

+0

http://stackoverflow.com/questions/2232238/how-to-bring-an-activity-to-foreground-top-of-stack – TronicZomB

+0

спасибо большое !!! – sheu46

ответ

0

Ваш код работает исправно. Если я не ошибаюсь, ваша проблема в том, что событие на Button не работает. Когда, возвращаясь из деятельности 2 к Activity1

Я просто добавил Log в разных местах в вашем коде, так как вы могли знать, что происходит и на каком месте.

MainActivity

public class MainActivity extends Activity { 
private Button bt_dialog; 
AlertDialog.Builder builder; 
AlertDialog mDialog; 
Intent i = new Intent(); 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    bt_dialog = (Button) findViewById(R.id.button1); 
    i.setClass(Experiment.this, DialogActivity.class); 
    i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
    // click button and show the dialog after 10s 
    Log.i("MainActivity ", "Create"); 
    bt_dialog.setOnClickListener(new Button.OnClickListener() { 

     public void onClick(final View view) { 
      Log.i("MainActivity ", "onClick--Start"); 
      CountDownTimer dlgCountDown; 
      dlgCountDown = new CountDownTimer(10000, 1000) { 
       public void onTick(long millisUntilFinished) { 
       } 

       public void onFinish() { 
        Log.i("MainActivity ment", "onClick-- Finish"); 
        startActivity(i); 
       } 
      }.start(); 
     } 

    }); 
    } 
} 

Вторая активность:

public class DialogActivity extends Activity { 
AlertDialog.Builder builder; 
AlertDialog mDialog; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    requestWindowFeature(Window.FEATURE_NO_TITLE); 
    setContentView(R.layout.activity_dialog); 
    String dialogText = "dialog text"; 
    TextView txt = (TextView) findViewById(R.id.textView1); 
    txt.setText(dialogText); 
    Log.i("Dialog", "onCreate"); 
    Button dismissbutton = (Button) findViewById(R.id.button1); 
    dismissbutton.setOnClickListener(new Button.OnClickListener() { 

     public void onClick(View v) { 
      Log.i("Dialog", "onClick"); 
      DialogActivity.this.finish(); 
     } 
    }); 
    } 
} 

Вход Cat Выход

05-25 10:33:14.007: I/dalvikvm-heap(19907): Grow heap (frag case) to 16.102MB for 3821200-byte allocation 
05-25 10:33:14.117: I/dalvikvm-heap(19907): Grow heap (frag case) to 22.580MB for 6793232-byte allocation 
05-25 10:33:14.267: I/MainActivity(19907): Create 
05-25 10:33:19.267: I/MainActivity(19907): onClick--Start 
05-25 10:33:29.267: I/MainActivity(19907): onClick-- Finish 
05-25 10:33:29.337: I/Dialog(19907): onCreate 
05-25 10:33:34.007: I/Dialog(19907): onClick 
05-25 10:33:41.288: I/MainActivity(19907): onClick--Start 
05-25 10:33:51.297: I/MainActivity(19907): onClick-- Finish 
05-25 10:33:51.357: I/Dialog(19907): onCreate 

Так Похоже, ваш Button в MainActivity работает нормально

+0

поблагодарить за ваш ответ. Но моя проблема заключается в том, что я могу успешно всплывать, когда я нажал Back Key на главный экран. Но диалог не будет отображаться после того, как я нажал Home Key и перешел на главный экран. Однако, когда я открываю приложение, Я обнаружил, что он появился. – sheu46

+0

@ sheu46 ok plz explain a) Главная -> Диалог - (кнопка диалога) -> Главная (и снова и снова) Работает отлично b) Главная -> Диалог - (кнопка возврата) -> Главная (и снова и снова) Working Great c) main -> Dialog - (кнопка дома) -> Диалог -> (кнопка или обратно) ---> Главная (Работает отлично ... Так где же точная проблема A/B/C – MDMalik

+0

Я нажал кнопку «Домой» и перешел на главный экран, но диалог не будет отображаться после 10 секунд. – sheu46

0

я решил его просто добавив это в файле манифеста:

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

Добавим, что в теге приложения.

Смежные вопросы