0

我想在 10 秒后在主屏幕时显示 Dialog,

我将我的主题修改为 Theme.Dialog,

现在,当我按下返回键回到主屏幕时,我成功弹出了它。

但我的问题是,当我按下 Home 键并进入主屏幕后,

10s后不会弹出对话框,

但是,当我打开我的应用程序时,

我发现它已经出现在那里。

那么,谁能告诉我如何解决这个问题?

这是我的代码(我使用两个活动):

第一个活动:

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();
      }
    });
  }

这是我的清单代码:

<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>

4

2 回答 2

0

您的代码工作正常。如果我没记错的话,您的问题是 Event On theButton不起作用。从 Activity 2 回到 Activity1 时

我只是Log在您的代码中的不同位置添加,以便您知道发生了什么以及在哪个位置。

主要活动

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();
        }
    });
   }
}

日志猫输出

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

所以看起来你的ButtoninMainActivity工作正常

于 2013-05-25T07:40:57.037 回答
0

我只是通过在清单文件中添加它来解决它:

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

将其添加到应用程序标签中。

于 2017-03-25T06:41:09.390 回答