android dialog置顶问题

上一篇 / 下一篇  2013-02-05 12:40:29 / 个人分类:android开发

开发过程中,需要弹出对话框的时候,我们大多数都是使用dialog,而大多数都是使用builder,问题就在于builder初始化过程中需要上下文内容,这就造成如果程序中同时有多个Activity显示时,你必须获取当前顶层的Activity,获取顶层的activity有三种方法,第一种:通过标志位,每一个activity设置一个数字,当onResume时修改标志位,根据标志位获取当前顶层的activity,第二种:获取当前的view,进而获取顶层activity,这种方法我没有实现,第三种:我替换第一种方法,现在使用的,设置一个透明的activity,然后当需要弹出对话框的时候,先启动透明的activity,然后再通过hander发送消息,启动dialog,当然dialog的上下文内容就是透明的activity,当关闭dialog时候,同时也要关闭activity,这就用户也察觉不到,同时dialog也会置顶。
下面时第三种方法的代码:
DialogActivity.java透明的activity

import com.wificar.util.Android_Exit;
import com.wificar.util.WificarVar;

import android.app.Activity;
import android.os.Bundle;
import android.os.Message;
import android.view.Window;
import android.widget.RelativeLayout;

public class DialogActivity extends Activity{

    RelativeLayout parentLayout;
    public static DialogActivity INSTANCE = null;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        requestWindowFeature(Window.FEATURE_NO_TITLE);
        parentLayout = new RelativeLayout(this);
        RelativeLayout.LayoutParams parentLayoutParams = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.FILL_PARENT, RelativeLayout.LayoutParams.FILL_PARENT);
        setContentView(parentLayout, parentLayoutParams);
        INSTANCE = this;
        Android_Exit.getInstance().addActivity(this); //tianjia
        switch (WificarVar.dialogFlag) {
        case 0://alarm dialog
            Message shootpre = new Message();
            shootpre.what = WificarActivity.MESSAGE_SHOWALAEMDIALOG;
            WificarActivity.getInstance().getHandler().sendMessage(shootpre);
            shootpre = null;
            break;
        case 1://ping dialog
            Message ping = new Message();
            ping.what = WificarActivity.MESSAGE_PING_FAIL;
            WificarActivity.getInstance().getHandler().sendMessage(ping);
            break;
        default:
            break;
        }
    }
    @Override
    protected void onStop() {
        super.onStop();
        try {
            if (INSTANCE != null) {
                killSelf();
            }
        } catch (Exception e) {
        }
    }
    public void killSelf(){
        finish();
        INSTANCE = null;
    }

}

在需要弹出对话框的地方
        dialogFlag = 0;
        Intent intent = new Intent();
        intent.setClass(main.this, DialogActivity.class);
        startActivity(intent);

透明activity的实现见我之前写的

android设置Activity背景色为透明的2种方法


TAG:

 

评分:0

我来说两句

Open Toolbar