请把你的Activity代码和MyDialog 代码贴一下吧
解决方案 »
- 关于Layout-***x***的困惑
- ios系统能安装java程序吗
- 关于Android开发的一点小小问题
- 模拟点击屏幕失败!
- android如何实现重绘
- 安卓做百度地图定位
- android源码解压出错
- 关于ViewFlipper的问题,在同一个页面有两个layout,当滑动到第二个view的时候吗,怎样监听返回键返回到上一个layout,而不关闭页面~
- Exception in thread "Thread-0" java.lang.RuntimeException: Stub! at android.急!
- Android中删除照片操作
- 在linux下 如何把JAVA JDK从1.6降到1.5
- Android 文件压缩与加密策略
而Activity一般是用View或者ViewGroup的子类 LinearLayout或者FrameLayout等等构成的
就是在setContentView的流程Dialog并不是一个Activity 所以你不能把Dialog用addView的方式加到Activity中间你可以在Activity的响应函数或者Intent中去New一个dialog但是这两者之间并没有View和ViewGroup之间的从属关系
--------------------------------------------------------------
那在new 一个dialog时应该传入一个什么样的Context呢?
MyActivity.this或getApplicaitonContext()?
而Activity一般是用View或者ViewGroup的子类 LinearLayout或者FrameLayout等等构成的
就是在setContentView的流程Dialog并不是一个Activity 所以你不能把Dialog用addView的方式加到Activity中间你可以在Activity的响应函数或者Inten……
[/Quote]
Android dialog 学习
@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
}
}代码如上,哪个大侠能看看
mRecentAppsDialog.show();
----------------------------------------------------
这两行应该改为MyDialog dlg = new MyDialog (getApplicationContext());
dlg .show();
所以“Dialog并不是一个Activity”,所以
window.setType(WindowManager.LayoutParams.TYPE_SYSTEM_DIALOG);这行去掉就OK了。应该是不能set这种类型。
用MyActivity.this,
再注释掉window.setType(WindowManager.LayoutParams.TYPE_SYSTEM_DIALOG),
Dialog终于显示出来了,非常感谢madsky007!