请把你的Activity代码和MyDialog 代码贴一下吧

解决方案 »

  1.   

    就是最简单的Activity和Dialog,只显示了必要的函数
      

  2.   

    这里Android 的dialog并不是继承自View
    而Activity一般是用View或者ViewGroup的子类 LinearLayout或者FrameLayout等等构成的
    就是在setContentView的流程Dialog并不是一个Activity 所以你不能把Dialog用addView的方式加到Activity中间你可以在Activity的响应函数或者Intent中去New一个dialog但是这两者之间并没有View和ViewGroup之间的从属关系
      

  3.   

    你可以在Activity的响应函数或者Intent中去New一个dialog
    --------------------------------------------------------------
    那在new 一个dialog时应该传入一个什么样的Context呢?
    MyActivity.this或getApplicaitonContext()?
      

  4.   

    这里Android 的dialog并不是继承自View
    而Activity一般是用View或者ViewGroup的子类 LinearLayout或者FrameLayout等等构成的
    就是在setContentView的流程Dialog并不是一个Activity 所以你不能把Dialog用addView的方式加到Activity中间你可以在Activity的响应函数或者Inten……
    [/Quote]
      

  5.   

      有自定义的对话框  也有ALertDialog 
       Android dialog 学习
      

  6.   

    public class MyActivity extends Activity {
    @Override
    public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    IntentFilter mBroadcastIntentFilter = new IntentFilter("ACTION_TEST");
    registerReceiver(mBroadcastReceiver, mBroadcastIntentFilter);
    }
        
    protected void onStart()
    {
    super.onStart();

    Intent intent =  new  Intent("ACTION_TEST");
    sendBroadcast(intent);
    }

    private BroadcastReceiver mBroadcastReceiver = new BroadcastReceiver() {
            @Override
            public void onReceive(Context context, Intent intent) {
                String action = intent.getAction();
                if (action.equals(action)) {
                 try
             {
                 RecentApplicationsDialog   mRecentAppsDialog = new RecentApplicationsDialog(getApplicationContext()); 
                 mRecentAppsDialog.show();
             }
             catch(Exception ex)
             {
             Toast.makeText(getApplicationContext(), ex.getMessage(), 10000).show();
             }
                }
            }
        };
    }public class MyDialog extends Dialog implements OnClickListener {

        public MyDialog(Context context) {
            super(context);
        }
        
        /**
         * We create the recent applications dialog just once, and it stays around (hidden)
         * until activated by the user.
         *
         * @see PhoneWindowManager#showRecentAppsDialog
         */
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            
            Window window = getWindow();
            window.requestFeature(Window.FEATURE_NO_TITLE);
            window.setType(WindowManager.LayoutParams.TYPE_SYSTEM_DIALOG);
            window.setFlags(WindowManager.LayoutParams.FLAG_ALT_FOCUSABLE_IM,
                    WindowManager.LayoutParams.FLAG_ALT_FOCUSABLE_IM);
            window.setTitle("Recents");
            
            final WindowManager.LayoutParams params = window.getAttributes();
            params.width = WindowManager.LayoutParams.MATCH_PARENT;
            params.height = WindowManager.LayoutParams.MATCH_PARENT;
            window.setAttributes(params);
            window.setFlags(0, WindowManager.LayoutParams.FLAG_DIM_BEHIND);
        }
        
    @Override
    public void onClick(View v) {
    // TODO Auto-generated method stub
    }
    }代码如上,哪个大侠能看看
      

  7.   

    RecentApplicationsDialog mRecentAppsDialog = new RecentApplicationsDialog(getApplicationContext());  
      mRecentAppsDialog.show();
    ----------------------------------------------------
    这两行应该改为MyDialog dlg = new MyDialog (getApplicationContext());  
    dlg .show();
      

  8.   

    Android中的Dialog是继承自 java.lang.Object 的;
    所以“Dialog并不是一个Activity”,所以
      

  9.   

    android社区里不懂装懂的人怎么那么多?杯具了
      

  10.   

    getApplicationContext()换成MyActivity.this也不行吗?太奇怪了
      

  11.   

    你的MyDialog中代码
    window.setType(WindowManager.LayoutParams.TYPE_SYSTEM_DIALOG);这行去掉就OK了。应该是不能set这种类型。
      

  12.   


    用MyActivity.this,
    再注释掉window.setType(WindowManager.LayoutParams.TYPE_SYSTEM_DIALOG),
    Dialog终于显示出来了,非常感谢madsky007!