社区
Android
帖子详情
在thread中怎样检测是否有alertdialog弹出?
hexx
2017-12-13 08:58:48
在thread或Timer中怎样检测是否有alertdialog弹出?这个alertdialog可能是本应用Activity的,也有可能是系统的。
...全文
409
2
打赏
收藏
在thread中怎样检测是否有alertdialog弹出?
在thread或Timer中怎样检测是否有alertdialog弹出?这个alertdialog可能是本应用Activity的,也有可能是系统的。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
2 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
apples_kk
2017-12-13
打赏
举报
回复
为什么要通过thread检测呢,而不是对alert做个包装 使用呢 描述清楚你的使用场景
hexx
2017-12-13
打赏
举报
回复
这个alertdialog不是我的Activity弹出的(例如系统警告框),我是在service里用Timer定时检测是否有alertdialog弹出,再模拟点击把它关闭。
andorid
dialog
大合集
package cn.m15.list; import java.util.ArrayList; import android.app.Activity; import android.app.
Alert
Dialog
; import android.app.Progress
Dialog
; import android.content.
Dialog
Interface; import android.os.Bundle; import android.view.LayoutInflater; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.EditText; /** * by:宣雨松 * email:xuanyusong@qq.com * @author Administrator * */ public class Main
Dialog
extends Activity implements Runnable{ /**确定取消信息框 **/ private static final int
DIALOG
_0 = 1; /**多个按钮信息框 **/ private static final int
DIALOG
_1 = 2; /**列表框 **/ private static final int
DIALOG
_2 = 3; /**进度条框 **/ private static final int
DIALOG
_3 = 4; /**单项选择列表框 **/ private static final int
DIALOG
_4 = 5; /**多项选择列表框 **/ private static final int
DIALOG
_5 = 6; /**自定义布局 **/ private static final int
DIALOG
_6 = 7; /**读取进度框 **/ private static final int
DIALOG
_7 = 8; private static final int MAX_PROGRESS = 100; private Progress
Dialog
mProgress
Dialog
= null; final String[] mItems = {"item0","item1","itme2","item3","itme4","item5","item6"}; int mSingleChoiceID = -1; ArrayList
MultiChoiceID = new ArrayList
(); @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); Button button0 = (Button) findViewById(R.id.button0); button0.setOnClickListener(new OnClickListener() { public void onClick(View v) { Creat
Dialog
(
DIALOG
_0); } }); Button button1 = (Button) findViewById(R.id.button1); button1.setOnClickListener(new OnClickListener() { public void onClick(View v) { Creat
Dialog
(
DIALOG
_1); } }); Button button2 = (Button) findViewById(R.id.button2); button2.setOnClickListener(new OnClickListener() { public void onClick(View v) { Creat
Dialog
(
DIALOG
_2); } }); Button button3 = (Button) findViewById(R.id.button3); button3.setOnClickListener(new OnClickListener() { public void onClick(View v) { Creat
Dialog
(
DIALOG
_3); mProgress
Dialog
.setProgress(0); } }); Button button4 = (Button) findViewById(R.id.button4); button4.setOnClickListener(new OnClickListener() { public void onClick(View v) { Creat
Dialog
(
DIALOG
_4); } }); Button button5 = (Button) findViewById(R.id.button5); button5.setOnClickListener(new OnClickListener() { public void onClick(View v) { Creat
Dialog
(
DIALOG
_5); } }); Button button6 = (Button) findViewById(R.id.button6); button6.setOnClickListener(new OnClickListener() { public void onClick(View v) { Creat
Dialog
(
DIALOG
_6); } }); Button button7 = (Button) findViewById(R.id.button7); button7.setOnClickListener(new OnClickListener() { public void onClick(View v) { Creat
Dialog
(
DIALOG
_7); } }); } public void Creat
Dialog
(int id) {
Alert
Dialog
.Builder builder = new
Alert
Dialog
.Builder(Main
Dialog
.this); switch(id) { case
DIALOG
_0: builder.setIcon(R.drawable.icon); builder.setTitle("你确定要离开吗?"); builder.setPositiveButton("确定", new
Dialog
Interface.OnClickListener() { public void onClick(
Dialog
Interface
dialog
, int whichButton) { //这里添加点击确定后的逻辑 show
Dialog
("你选择了确定"); } }); builder.setNegativeButton("取消", new
Dialog
Interface.OnClickListener() { public void onClick(
Dialog
Interface
dialog
, int whichButton) { //这里添加点击确定后的逻辑 show
Dialog
("你选择了取消"); } }); break; case
DIALOG
_1: builder.setIcon(R.drawable.icon); builder.setTitle("投票"); builder.setMessage("您认为什么样的内容能吸引您?"); builder.setPositiveButton("有趣味的", new
Dialog
Interface.OnClickListener() { public void onClick(
Dialog
Interface
dialog
, int whichButton) { show
Dialog
("你选择了有趣味的"); } }); builder.setNeutralButton("有思想的", new
Dialog
Interface.OnClickListener() { public void onClick(
Dialog
Interface
dialog
, int whichButton) { show
Dialog
("你选择了有思想的"); } }); builder.setNegativeButton("主题强的", new
Dialog
Interface.OnClickListener() { public void onClick(
Dialog
Interface
dialog
, int whichButton) { show
Dialog
("你选择了主题强的"); } }); break; case
DIALOG
_2: builder.setTitle("列表选择框"); builder.setItems(mItems, new
Dialog
Interface.OnClickListener() { public void onClick(
Dialog
Interface
dialog
, int which) { //点击后
弹出
窗口选择了第几项 show
Dialog
("你选择的id为" + which + " , " + mItems[which]); } }); break; case
DIALOG
_3: mProgress
Dialog
= new Progress
Dialog
(Main
Dialog
.this); mProgress
Dialog
.setIcon(R.drawable.icon); mProgress
Dialog
.setTitle("进度条窗口"); mProgress
Dialog
.setProgressStyle(Progress
Dialog
.STYLE_HORIZONTAL); mProgress
Dialog
.setMax(MAX_PROGRESS); mProgress
Dialog
.setButton("确定", new
Dialog
Interface.OnClickListener() { public void onClick(
Dialog
Interface
dialog
, int whichButton) { //这里添加点击后的逻辑 } }); mProgress
Dialog
.setButton2("取消", new
Dialog
Interface.OnClickListener() { public void onClick(
Dialog
Interface
dialog
, int whichButton) { //这里添加点击后的逻辑 } }); mProgress
Dialog
.show(); new
Thread
(this).start(); return; case
DIALOG
_4: mSingleChoiceID = -1; builder.setIcon(R.drawable.icon); builder.setTitle("单项选择"); builder.setSingleChoiceItems(mItems, 0, new
Dialog
Interface.OnClickListener() { public void onClick(
Dialog
Interface
dialog
, int whichButton) { mSingleChoiceID = whichButton; show
Dialog
("你选择的id为" + whichButton + " , " + mItems[whichButton]); } }); builder.setPositiveButton("确定", new
Dialog
Interface.OnClickListener() { public void onClick(
Dialog
Interface
dialog
, int whichButton) { if(mSingleChoiceID > 0) { show
Dialog
("你选择的是" + mSingleChoiceID); } } }); builder.setNegativeButton("取消", new
Dialog
Interface.OnClickListener() { public void onClick(
Dialog
Interface
dialog
, int whichButton) { } }); break; case
DIALOG
_5: MultiChoiceID.clear(); builder.setIcon(R.drawable.icon); builder.setTitle("多项选择"); builder.setMultiChoiceItems(mItems, new boolean[]{false, false, false, false, false, false, false}, new
Dialog
Interface.OnMultiChoiceClickListener() { public void onClick(
Dialog
Interface
dialog
, int whichButton, boolean isChecked) { if(isChecked) { MultiChoiceID.add(whichButton); show
Dialog
("你选择的id为" + whichButton + " , " + mItems[whichButton]); }else { MultiChoiceID.remove(whichButton); } } }); builder.setPositiveButton("确定", new
Dialog
Interface.OnClickListener() { public void onClick(
Dialog
Interface
dialog
, int whichButton) { String str = ""; int size = MultiChoiceID.size(); for (int i = 0 ;i < size; i++) { str+= mItems[MultiChoiceID.get(i)] + ", "; } show
Dialog
("你选择的是" + str); } }); builder.setNegativeButton("取消", new
Dialog
Interface.OnClickListener() { public void onClick(
Dialog
Interface
dialog
, int whichButton) { } }); break; case
DIALOG
_6: LayoutInflater factory = LayoutInflater.from(this); final View textEntryView = factory.inflate(R.layout.test, null); builder.setIcon(R.drawable.icon); builder.setTitle("自定义输入框"); builder.setView(textEntryView); builder.setPositiveButton("确定", new
Dialog
Interface.OnClickListener() { public void onClick(
Dialog
Interface
dialog
, int whichButton) { EditText userName = (EditText) textEntryView.findViewById(R.id.etUserName); EditText password = (EditText) textEntryView.findViewById(R.id.etPassWord); show
Dialog
("姓名 :" + userName.getText().toString() + "密码:" + password.getText().toString() ); } }); builder.setNegativeButton("取消", new
Dialog
Interface.OnClickListener() { public void onClick(
Dialog
Interface
dialog
, int whichButton) { } }); break; case
DIALOG
_7: mProgress
Dialog
= new Progress
Dialog
(this); mProgress
Dialog
.setTitle("读取ing"); mProgress
Dialog
.setMessage("正在读取
中
请稍候"); mProgress
Dialog
.setIndeterminate(true); mProgress
Dialog
.setCancelable(true); mProgress
Dialog
.show(); return; } builder.create().show(); } private void show
Dialog
(String str) { new
Alert
Dialog
.Builder(Main
Dialog
.this) .setMessage(str) .show(); } @Override public void run() { int Progress = 0; while(Progress < MAX_PROGRESS) { try {
Thread
.sleep(100); Progress++; mProgress
Dialog
.incrementProgressBy(1); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } }
炫舞吧 android 游戏开发
模仿qq炫舞游戏做出的单机版游戏 package cn.itcast.game; import java.io.InputStream; import android.app.Activity; import android.app.
Alert
Dialog
; import android.content.Context; import android.content.
Dialog
Interface; import android.content.Intent; import android.content.pm.ActivityInfo; import android.content.res.Configuration; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.graphics.Canvas; import android.graphics.Paint; import android.media.AudioManager; import android.media.MediaPlayer; import android.media.SoundPool; import android.os.Bundle; import android.os.Handler; import android.os.Message; import android.util.Log; import android.view.Display; import android.view.Gravity; import android.view.LayoutInflater; import android.view.MotionEvent; import android.view.SurfaceHolder; import android.view.SurfaceView; import android.view.View; import android.view.Window; import android.view.WindowManager; import android.view.SurfaceHolder.Callback; import android.widget.RadioButton; import android.widget.RadioGroup; import android.widget.Toast; import android.widget.RadioGroup.OnCheckedChangeListener; public class MainActivity extends Activity { AnimView mAnimView = null; public void onConfigurationChanged(Configuration newConfig) { super.onConfigurationChanged(newConfig); //
检测
屏幕的方向:纵向或横向 if (this.getResources().getConfiguration().orientation == Configuration.ORIENTATION_LANDSCAPE) { // 当前为横屏, 在此处添加额外的处理代码 } else if (this.getResources().getConfiguration().orientation == Configuration.ORIENTATION_PORTRAIT) { // 当前为竖屏, 在此处添加额外的处理代码 } } public void onBackPressed() { // TODO Auto-generated method stub super.onBackPressed(); android.os.Process.killProcess(android.os.Process.myPid()); } public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); requestWindowFeature(Window.FEATURE_NO_TITLE); getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN); // 强制为横屏 setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE); Display display = getWindowManager().getDefaultDisplay(); // 显示自定义的游戏View mAnimView = new AnimView(this, display.getWidth(), display.getHeight()); setContentView(mAnimView); } public boolean onTouchEvent(MotionEvent event) { // 获得触摸的坐标 int x = (int) event.getX(); int y = (int) event.getY(); switch (event.getAction()) { case MotionEvent.ACTION_DOWN: mAnimView.UpdateEvent(x, y); break; case MotionEvent.ACTION_MOVE: break; case MotionEvent.ACTION_UP: break; } return false; } public class AnimView extends SurfaceView implements Callback, Runnable { private Paint mpaint = null; private Bitmap bitmap = null; private Context mContext = null; private Canvas mCanvas = null; private boolean mIsRunning = false; private
Thread
m
thread
= null; private SurfaceHolder mSurfaceHolder = null; private Bitmap bitmap_main_1 = null; private Bitmap bitmap_main_2 = null; private Bitmap bitmap_main_3 = null; private Bitmap bitmap_main_4 = null; private int temp = 0; private int bitmap_main_1_Width = 0; private int bitmap_main_1_Height = 0; private int bitmap_main_2_Width = 0; private int bitmap_main_2_Height = 0; private int bitmap_main_3_Width = 0; private int bitmap_main_3_Height = 0; private int bitmap_main_4_Width = 0; private int bitmap_main_4_Height = 0; private MediaPlayer mMediaPlayer = null; private SoundPool mSoundPool = null; private int button_sound = 0; private Bitmap bitmap_up = null; // 屏幕尺寸 private int mScreenWidth = 0; // private int mScreenHeight = 0; // 炫舞吧 图片尺寸 private int bitmap_up_width = 0; private Handler handler = new Handler() { public void handleMessage(Message msg) { try { Log.e("MainActivity", "wenxi11111");
dialog
_show(); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } } }; private RadioGroup m_RadioGroup = null; private RadioButton m_Radio2 = null; private RadioButton m_Radio1 = null; private RadioButton m_Radio3 = null; protected int choose_music = 1; protected int music_play = 0; public int start_music = 0; protected int now_checkid = 0; public AnimView(Context context, int width, int height) { super(context); mScreenWidth = width; // mScreenHeight = height; mContext = context; mpaint = new Paint(); /** 获取mSurfaceHolder **/ mSurfaceHolder = getHolder(); mSurfaceHolder.addCallback(this); init(); } public void
dialog
_show() { Log.e("MainActivity", "wenxi2222222");
Alert
Dialog
.Builder builder = new
Alert
Dialog
.Builder(mContext); Log.e("MainActivity", "wenxi2222223"); LayoutInflater inflater = LayoutInflater.from(mContext); Log.e("MainActivity", "wenxi2222224"); final View textEntryView = inflater.inflate(R.layout.music, null); Log.e("MainActivity", "wenxi2222225"); builder.setIcon(R.drawable.xiyangyang_1); builder.setTitle("请选择背景音乐"); builder.setCancelable(false); builder.setView(textEntryView); Log.e("MainActivity", "wenxi2222226"); m_RadioGroup = (RadioGroup) textEntryView .findViewById(R.id.RadioGroup01); m_Radio1 = (RadioButton) textEntryView .findViewById(R.id.RadioButton1); m_Radio2 = (RadioButton) textEntryView .findViewById(R.id.RadioButton2); m_Radio3 = (RadioButton) textEntryView .findViewById(R.id.RadioButton3); // now_checkid = m_RadioGroup.getCheckedRadioButtonId(); m_RadioGroup.check(now_checkid); m_RadioGroup .setOnCheckedChangeListener(new OnCheckedChangeListener() { public void onCheckedChanged(RadioGroup group, int checkedId) { if (checkedId == m_Radio1.getId()) { Log.e("MainActivity", Integer .toString(checkedId)); Log.e("MainActivity", Integer.toString(m_Radio1 .getId())); choose_music = 1; Toast toast = Toast.makeText(mContext, "你选择了music1", Toast.LENGTH_LONG); toast.setGravity(Gravity.CENTER_HORIZONTAL, toast.getXOffset(), toast.getYOffset()); toast.show(); } else if (checkedId == m_Radio2.getId()) { choose_music = 2; Toast toast = Toast.makeText(mContext, "你选择了music2", Toast.LENGTH_LONG); toast.setGravity(Gravity.CENTER_HORIZONTAL, toast.getXOffset(), toast.getYOffset()); toast.show(); } else if (checkedId == m_Radio3.getId()) { choose_music = 3; Toast toast = Toast.makeText(mContext, "你选择了music3", Toast.LENGTH_LONG); toast.setGravity(Gravity.CENTER_HORIZONTAL, toast.getXOffset(), toast.getYOffset()); toast.show(); } now_checkid = checkedId; } }); builder.setPositiveButton("保存", new
Dialog
Interface.OnClickListener() { public void onClick(
Dialog
Interface
dialog
, int which) {
dialog
.cancel();// 取消
弹出
框 if (choose_music == 1) { mMediaPlayer.release(); /** 创建MediaPlayer对象 **/ mMediaPlayer = MediaPlayer.create(mContext, R.raw.bgmusic_1); /** 设置为循环播放 **/ mMediaPlayer.setLooping(true); mMediaPlayer.start(); } else if (choose_music == 2) { mMediaPlayer.release(); /** 创建MediaPlayer对象 **/ mMediaPlayer = MediaPlayer.create(mContext, R.raw.bgmusic_2); /** 设置为循环播放 **/ mMediaPlayer.setLooping(true); mMediaPlayer.start(); } else if (choose_music == 3) { mMediaPlayer.release(); mMediaPlayer = MediaPlayer.create(mContext, R.raw.bgmusic_3); /** 设置为循环播放 **/ mMediaPlayer.setLooping(true); mMediaPlayer.start(); } } }); builder.setNegativeButton("放弃", new
Dialog
Interface.OnClickListener() { public void onClick(
Dialog
Interface
dialog
, int which) {
dialog
.cancel();// 取消
弹出
框 choose_music = start_music; } }); builder.create().show(); } private void init() { // 主界面静态图 bitmap = ReadBitmap(mContext, R.drawable.main_2_picture); bitmap_up = ReadBitmap(mContext, R.drawable.xuanwuba); bitmap_up_width = bitmap_up.getWidth(); bitmap_main_1 = ReadBitmap(mContext, R.drawable.main_1); bitmap_main_2 = ReadBitmap(mContext, R.drawable.main_2); bitmap_main_3 = ReadBitmap(mContext, R.drawable.main_3); bitmap_main_4 = ReadBitmap(mContext, R.drawable.main_4); bitmap_main_1_Width = bitmap_main_1.getWidth(); bitmap_main_1_Height = bitmap_main_1.getHeight(); bitmap_main_2_Width = bitmap_main_2.getWidth(); bitmap_main_2_Height = bitmap_main_2.getHeight(); bitmap_main_3_Width = bitmap_main_3.getWidth(); bitmap_main_3_Height = bitmap_main_3.getHeight(); bitmap_main_4_Width = bitmap_main_4.getWidth(); bitmap_main_4_Height = bitmap_main_4.getHeight(); // 主界面一个动态图显示 // mAnimation = new Animation(mContext,new int // []{R.drawable.a,R.drawable.b,R.drawable.c,R.drawable.d,R.drawable.e,R.drawable.f,R.drawable.g,R.drawable.h,R.drawable.i,R.drawable.j},true); // mAnimation = new Animation(mContext,new int // []{R.drawable.a_1,R.drawable.a_2,R.drawable.a_3,R.drawable.a_4,R.drawable.a_5,R.drawable.a_6,R.drawable.a_7,R.drawable.a_8,R.drawable.a_9,R.drawable.a_10,R.drawable.a_11,R.drawable.a_12,R.drawable.a_13,R.drawable.a_14,R.drawable.a_15,R.drawable.a_16,R.drawable.a_17,R.drawable.a_18,R.drawable.a_19,R.drawable.a_20},true); // mAnimation = new Animation(mContext,new int // []{R.drawable.b_1,R.drawable.b_2,R.drawable.b_3,R.drawable.b_4,R.drawable.b_5,R.drawable.b_6,R.drawable.b_7,R.drawable.b_8,R.drawable.b_9,R.drawable.b_10, // R.drawable.b_11,R.drawable.b_12,R.drawable.b_14,R.drawable.b_15,R.drawable.b_16,R.drawable.b_17,R.drawable.b_18,R.drawable.b_19,R.drawable.b_20, // R.drawable.b_21,R.drawable.b_22,R.drawable.b_23,R.drawable.b_24,R.drawable.b_25,R.drawable.b_26,R.drawable.b_27,R.drawable.b_28,R.drawable.b_29,R.drawable.b_30, // R.drawable.b_31,R.drawable.b_32,R.drawable.b_33 // },true); /** 创建MediaPlayer对象 **/ mMediaPlayer = MediaPlayer.create(mContext, R.raw.bgmusic_2); /** 设置为循环播放 **/ mMediaPlayer.setLooping(true); /** 创建一个声音播放池 **/ // 参数1为声音池同时播放的流的最大数量 // 参数2为播放流的类型 // 参数3为音乐播放效果 setmSoundPool(new SoundPool(2, AudioManager.STREAM_MUSIC, 100)); } public void UpdateEvent(int x, int y) { temp = IsClick(x, y); switch (temp) { case 1: button_sound++; Intent intent = new Intent(MainActivity.this, MenuActivity.class); startActivity(intent); break; case 2: button_sound++; if (button_sound % 2 == 1) { mMediaPlayer.setVolume(0, 0); } else { mMediaPlayer.setVolume(2, 2); } break; case 3: handler.sendMessage(new Message()); start_music = choose_music; mIsRunning = false; break; case 4: mMediaPlayer.release(); android.os.Process.killProcess(android.os.Process.myPid()); break; } } private int IsClick(int x, int y) { int a = 0; if (x >= 170 + 20 && x <= 170 + bitmap_main_1_Width - 20 && y >= 110 + 20 && y <= 110 + bitmap_main_1_Height - 20) a = 1; else if (x >= 170 + 35 && x <= 170 + bitmap_main_2_Width - 35 && y >= 160 + 20 && y <= 160 + bitmap_main_2_Height - 20) a = 2; else if (x >= 170 + 20 && x <= 170 + bitmap_main_3_Width - 40 && y >= 210 + 20 && y <= 210 + bitmap_main_3_Height - 20) a = 3; else if (x >= 170 + 40 && x <= 170 + bitmap_main_4_Width - 35 && y >= 260 + 20 && y <= 260 + bitmap_main_4_Height - 20) a = 4; return a; } private void Draw() { mCanvas.drawBitmap(bitmap, 0, 0, mpaint); mCanvas.drawBitmap(bitmap_up, (mScreenWidth - bitmap_up_width) / 2, 5, mpaint); mCanvas.drawBitmap(bitmap_main_1, 170, 110, mpaint); mCanvas.drawBitmap(bitmap_main_2, 170, 160, mpaint); mCanvas.drawBitmap(bitmap_main_3, 170, 210, mpaint); mCanvas.drawBitmap(bitmap_main_4, 170, 260, mpaint); mMediaPlayer.start(); mMediaPlayer.setVolume(2, 2); } private Bitmap ReadBitmap(Context context, int id) { BitmapFactory.Options opt = new BitmapFactory.Options(); opt.inPreferredConfig = Bitmap.Config.RGB_565; opt.inPurgeable = true; opt.inInputShareable = true; InputStream is = context.getResources().openRawResource(id); return BitmapFactory.decodeStream(is, null, opt); } @Override public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) { // TODO Auto-generated method stub } @Override public void surfaceCreated(SurfaceHolder holder) { // TODO Auto-generated method stub mIsRunning = true; m
thread
= new
Thread
(this); m
thread
.start(); } @Override public void surfaceDestroyed(SurfaceHolder holder) { // TODO Auto-generated method stub mIsRunning = false; } @Override public void run() { while (mIsRunning) { synchronized (mSurfaceHolder) { mCanvas = mSurfaceHolder.lockCanvas(); Draw(); mSurfaceHolder.unlockCanvasAndPost(mCanvas); } try {
Thread
.sleep(20); } catch (InterruptedException e) { e.printStackTrace(); } } } public void setmSoundPool(SoundPool mSoundPool) { this.mSoundPool = mSoundPool; } public SoundPool getmSoundPool() { return mSoundPool; } } }
android在一个线程
Thread
中
不能
弹出
alert
dialog
的解决办法(网络文件不能访问导致程序强行退出)
在读取网络文件时,有时候因为网络文件不能被访问导致出现Exception,这时想
弹出
一个
alert
dialog
,但是发现打开app后,app马上强制退出了。代码如下: 想要
弹出
alert
dialog
,必须利用如下方式,先将上图代码变为: new
Thread
(new Runnable() { @Override public void run() { try { list=readExcel(); } catch (IOEx
Day16、PopupWindow
弹出
窗和其他
Alert
Dialog
的子对话框
一、c,在学了自定义对话框后紧接着学习“
弹出
窗” 1.
弹出
窗和对话框(PopupWindow和
Alert
Dialog
)的异同点,一搜一大堆,一般而言:
Alert
Dialog
是非阻塞线程的,
Alert
Dialog
弹出
的时候,后台可是还可以做其他事情的;而PopupWindow是阻塞线程的, 这就意味着在我们退出这个
弹出
框之前,程序会一直等待 。 2.PopupWindow
Progress
Dialog
进度条和
Alert
Dialog
弹出
对话框的使用
显示对话框 对话框经常作为Activity的一部分来创建和显示。你通常应该从protected
Dialog
Activity.onCreate
Dialog
(int id) 回调方法里创建对话框。当你使用这个回调函数时,Android系统会有效的设置这个Activity为每个对话框的所有者,从而自动管理每个对话框的状态并挂靠到Activity上。这样,每个对话框继承这个Activity...
Android
80,350
社区成员
91,288
社区内容
发帖
与我相关
我的任务
Android
移动平台 Android
复制链接
扫一扫
分享
社区描述
移动平台 Android
android
android-studio
androidx
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章