导航:首页 > APP软件 > 安卓对话框源代码

安卓对话框源代码

发布时间:2025-10-06 14:45:35

1. 手机可以打开程序代码

手机打不开程序源代码,系统不同。

VBS文件手机是不能打开的,但可以将它嵌入到网页文件上,有的手机浏览器是支持HTML文件的,但是VBS代码中的大部分在手机上都不能用,如调用外部程序什么的,因为那是Windows的代码,不过手机可以支持msgbox、inputbox等函数,嵌到网页中的方法是新建一个文本文档,扩展名改为html,

在里面输入<script language="vbscript"></script>,输入vbs代码时在两个括号中间输入,不过可能和vbs文件不太一样,如

1

<scriptlanguage="vbscript">msgbox"哈哈!"</script>

不过手机还是推荐用JS脚本,举个例,弹出对话框

1

<scriptlanguage="vbscript">alert("哈哈!");</script>

如果你有能力你可以直接把做出的html文件上传到一个域名上,然后在手机直接输入网址打开,或者文件传到手机上打开

测试你的手机浏览器是否支持JS插件:在浏览器地址栏上输入

1

javascript:alert("哈哈!")

然后回车,如果能弹出对话框说明支持JS

VBS的方法:输入

1

vbscript:msgbox("哈哈!")

回车,同上

2. Android绯荤粺鎬庝箞鍒╃敤鍒╃敤Java鍙嶅皠鎶鏈闃绘㈤氳繃鎸夐挳鍏抽棴瀵硅瘽妗嗭紙AlertDialog锛

浼楁墍鍛ㄧ煡锛孉lertDialog绫荤敤浜庢樉绀哄硅瘽妗嗐傚叧浜嶢lertDialog鐨勫熀鏈鐢ㄦ硶鍦ㄨ繖閲屽氨涓嶈︾粏浠嬬粛浜嗭紝缃戜笂鏈夊緢澶氾紝璇昏呭彲浠ヨ嚜宸辨悳绱銆傞偅涔堟湰鏂囪佷粙缁嶇殑鏄濡備綍闅忓績鎵娆插湴鎺у埗AlertDialog銆
鐜板湪鎴戜滑鏉ョ湅鐪嬬涓涓闇姹傦細濡傛灉鏌愪釜搴旂敤闇瑕佸脊鍑轰竴涓瀵硅瘽妗嗐傚綋鍗曞嚮鈥滅‘瀹氣滄寜閽鏃跺畬鎴愭煇浜涘伐浣滐紝濡傛灉杩欎簺宸ヤ綔澶辫触锛屽硅瘽妗嗕笉鑳藉叧闂銆傝屽綋鎴愬姛瀹屾垚宸ヤ綔鍚庯紝鍒欏叧闂瀵硅瘽妗嗐傚綋鐒讹紝鏃犺轰綍绋嬪害鎯呭喌锛屽崟鍑烩滃彇娑堚濇寜閽閮戒細鍏抽棴瀵硅瘽妗嗐
杩欎釜闇姹傚苟涓嶅嶆潅锛屼篃骞朵笉杩囧垎锛堣櫧鐒舵垜浠鍙浠ヨ嚜宸卞紕涓狝ctivity鏉ュ畬鎴愯繖涓宸ヤ綔锛屼篃鍙鍦╒iew涓婅嚜宸辨斁鎸夐挳锛屼絾杩欐樉绀烘湁浜涘ぇ鐐鎵撹殜瀛愪簡锛屽傛灉瀵硅瘽妗嗕笂鍙鏈変竴琛屾枃鏈锛岃垂杩欎箞澶氬姴澶涓嶅间簡锛夈備絾浣跨敤杩嘇lertDialog鐨勮昏呴兘鐭ラ亾锛屾棤璁哄崟鍑荤殑鍝涓鎸夐挳锛屾棤璁烘寜閽鍗曞嚮浜嬩欢鐨勬墽琛屾儏鍐靛備綍锛屽硅瘽妗嗘槸鑲瀹氳佸叧闂鐨勩備篃灏辨槸璇达紝鐢ㄦ埛鏃犳硶鎺у埗瀵硅瘽妗嗙殑鍏抽棴鍔ㄤ綔銆傚疄闄呬笂锛屽叧闂瀵硅瘽妗嗙殑鍔ㄤ綔宸茬粡鍦ˋndroid SDK鍐欐讳簡锛屽苟涓旀湭缁欎娇鐢ㄨ呯暀鏈変换浣曟帴鍙c備絾鎴戠殑搴у彸閾鏄鈥滃畤瀹欎腑娌℃湁浠涔堟槸涓嶈兘鎺у埗鐨勨濄
鏃㈢劧瑕佹帶鍒跺规斁妗嗙殑鍏抽棴琛屼负锛岄栧厛灏卞緱鍒嗘瀽鏄鍝浜涚被銆佸摢浜涗唬鐮佷娇杩欎釜瀵硅瘽妗嗗叧闂鐨勩傝繘鍏AlertDialog绫荤殑婧愪唬鐮併傚湪AlertDialog涓鍙瀹氫箟浜嗕竴涓鍙橀噺锛歮Alert銆傝繖涓鍙橀噺鏄疉lertController绫诲瀷銆侫lertController绫绘槸Android鐨勫唴閮ㄧ被锛屽湪com.android.internal.app鍖呬腑锛屾棤娉曢氳繃鏅閫氱殑鏂瑰紡璁块棶銆備篃鏃犳硶鍦‥clipse涓閫氳繃鎸塁trl閿璺熻釜杩涙簮浠g爜銆備絾鍙浠ョ洿鎺ュ湪Android婧愪唬鐮佷腑鎵惧埌AlertController.java銆傛垜浠鍐嶅洖鍒癆lertDialog绫讳腑銆侫lertDialog绫诲疄闄呬笂鍙鏄涓涓鏋跺瓙銆傝薄璁剧疆鎸夐挳銆佽剧疆鏍囬樼瓑宸ヤ綔閮芥槸鐢盇lertController绫诲畬鎴愮殑銆傚洜姝わ紝AlertController绫绘墠鏄鍏抽敭銆
鎵惧埌AlertController.java鏂囦欢銆傛墦寮鍚庝笉瑕佹劅鍒板ご鏅曞摝锛岃繖涓鏂囦欢涓鐨勪唬鐮佹槸寰堝氬湴銆備笉杩囪繖涔堝氫唬鐮佸规湰鏂囩殑涓婚樹篃娌′粈涔堢敤澶勩備笅闈㈠氨鎵句竴涓嬫帶鍒舵寜閽鐨勪唬鐮併
鍦ˋlertController绫荤殑寮澶村氨浼氱湅鍒板備笅鐨勪唬鐮侊細 View.OnClickListener mButtonHandler = new View.OnClickListener() {
public void onClick(View v) {
Message m = null ;
if (v == mButtonPositive && mButtonPositiveMessage != null ) {
m = Message.obtain(mButtonPositiveMessage);
} else if (v == mButtonNegative && mButtonNegativeMessage != null ) {
m = Message.obtain(mButtonNegativeMessage);
} else if (v == mButtonNeutral && mButtonNeutralMessage != null ) {
m = Message.obtain(mButtonNeutralMessage);
}
if (m != null ) {
m.sendToTarget();
} // Post a message so we dismiss after the above handlers are executed
mHandler.obtainMessage(ButtonHandler.MSG_DISMISS_DIALOG, mDialogInterface)
.sendToTarget();
}
};
浠庤繖娈典唬鐮佷腑鍙浠ョ寽鍑烘潵锛屽墠鍑犺屼唬鐮佺敤鏉ヨЕ鍙戝硅瘽妗嗕腑鐨勪笁涓鎸夐挳锛 Positive 銆 Negative 鍜 Neutral 锛夌殑鍗曞嚮浜嬩欢锛岃屾渶鍚庣殑浠g爜鍒欑敤鏉ュ叧闂瀵硅瘽妗嗭紙鍥犱负鎴戜滑鍙戠幇浜 MSG_DISMISS_DIALOG 銆佺寽鍑烘潵鐨勶級銆
mHandler.obtainMessage(ButtonHandler.MSG_DISMISS_DIALOG, mDialogInterface)
.sendToTarget(); 涓婇潰鐨勪唬鐮佸苟涓嶆槸鐩存帴鏉ュ叧闂瀵硅瘽妗嗙殑锛岃屾槸閫氳繃涓涓 Handler 鏉ュ勭悊锛屼唬鐮佸備笅锛
private static final class ButtonHandler extends Handler {
// Button clicks have Message.what as the BUTTON{1,2,3} constant
private static final int MSG_DISMISS_DIALOG = 1 ;

private WeakReference < DialogInterface > mDialog; public ButtonHandler(DialogInterface dialog) {
mDialog = new WeakReference < DialogInterface > (dialog);
} @Override
public void handleMessage(Message msg) {
switch (msg.what) {

case DialogInterface.BUTTON_POSITIVE:
case DialogInterface.BUTTON_NEGATIVE:
case DialogInterface.BUTTON_NEUTRAL:
((DialogInterface.OnClickListener) msg.obj).onClick(mDialog.get(), msg.what);
break ;

case MSG_DISMISS_DIALOG:
((DialogInterface) msg.obj).dismiss();
}
}
}
浠庝笂闈浠g爜鐨勬渶鍚庡彲浠ユ壘鍒 ((DialogInterface) msg.obj).dismiss();銆傜幇鍦ㄧ湅浜嗚繖涔堝氭簮浠g爜锛屾垜浠鏉ユ荤粨涓涓嬪硅瘽妗嗘寜閽鍗曞嚮浜嬩欢鐨勫勭悊杩囩▼銆傚湪AlertController澶勭悊瀵硅瘽妗嗘寜閽鏃朵細涓烘瘡涓涓鎸夐挳娣诲姞涓涓猳nclick浜嬩欢銆傝岃繖涓浜嬩欢绫荤殑瀵硅薄瀹炰緥灏辨槸涓婇潰鐨刴ButtonHandler銆傚湪杩欎釜鍗曞嚮浜嬩欢涓棣栧厛浼氶氳繃鍙戦佹秷鎭鐨勬柟寮忚皟鐢ㄤ负鎸夐挳璁剧疆鐨勫崟鍑讳簨浠讹紙涔熷氨鏄閫氳繃setPositiveButton绛夋柟娉曠殑绗浜屼釜鍙傛暟璁剧疆鐨勫崟鍑讳簨浠讹級锛屽湪瑙﹀彂瀹屾寜閽鐨勫崟鍑讳簨浠跺悗锛屼細閫氳繃鍙戦佹秷鎭鐨勬柟寮忚皟鐢╠ismiss鏂规硶鏉ュ叧闂瀵硅瘽妗嗐傝屽湪AlertController绫讳腑瀹氫箟浜嗕竴涓鍏ㄥ眬鐨刴Handler鍙橀噺銆傚湪AlertController绫讳腑閫氳繃ButtonHandler绫绘潵瀵硅薄鏉ヤ负mHandler璧嬪笺傚洜姝わ紝鎴戜滑鍙瑕佷娇鐢ㄦ垜浠鑷宸盚andler瀵硅薄鏇挎崲ButtonHandler灏卞彲浠ラ樆姝㈣皟鐢╠ismiss鏂规硶鏉ュ叧闂瀵硅瘽妗嗐備笅闈㈠厛鍦ㄨ嚜宸辩殑绋嬪簭涓寤虹珛涓涓鏂扮殑ButtonHandler绫伙紙涔熷彲鍙鍏朵粬鐨勫悕锛夈
class ButtonHandler extends Handler
{ private WeakReference < DialogInterface > mDialog; public ButtonHandler(DialogInterface dialog)
{
mDialog = new WeakReference < DialogInterface > (dialog);
} @Override
public void handleMessage(Message msg)
{
switch (msg.what)
{ case DialogInterface.BUTTON_POSITIVE:
case DialogInterface.BUTTON_NEGATIVE:
case DialogInterface.BUTTON_NEUTRAL:
((DialogInterface.OnClickListener) msg.obj).onClick(mDialog
.get(), msg.what);
break ;
}
}
} 鎴戜滑鍙浠ョ湅鍒帮紝涓婇潰鐨勭被鍜孉lertController涓鐨凚uttonHandler绫诲緢鍍忥紝鍙鏄鏀鎺変簡switch璇鍙ョ殑鏈鍚庝竴涓猚ase瀛愬彞锛堢敤浜庤皟鐢╠ismiss鏂规硶锛夊拰鐩稿叧鐨勪唬鐮併
涓嬮潰鎴戜滑灏辫佷负AlertController涓鐨刴Handler閲嶆柊璧嬪笺傜敱浜巑Handler鏄痯rivate鍙橀噺锛屽洜姝わ紝鍦ㄨ繖閲岄渶瑕佷娇鐢↗ava鐨勫弽灏勬妧鏈鏉ヤ负mHandler璧嬪笺傜敱浜庡湪AlertDialog绫讳腑鐨刴Alert鍙橀噺鍚屾牱涔熸槸private锛屽洜姝わ紝涔熼渶瑕佷娇鐢ㄥ悓鏍风殑鍙嶅皠鎶鏈鏉ヨ幏寰梞Alert鍙橀噺銆備唬鐮佸備笅锛
鍏堝缓绔嬩竴涓 AlertDialog 瀵硅薄
AlertDialog alertDialog = new AlertDialog.Builder( this )
.setTitle( " abc " )
.setMessage( " content " )
.setIcon(R.drawable.icon)
.setPositiveButton( 鈥滅‘瀹氣,
new OnClickListener()
{
@Override
public void onClick(DialogInterface dialog,
int which)
{ }
}).setNegativeButton( " 鍙栨秷 " , new OnClickListener()
{ @Override
public void onClick(DialogInterface dialog, int which)
{
dialog.dismiss();
}
}).create()
涓婇潰鐨勫硅瘽妗嗗緢鏅閫氾紝鍗曞嚮鍝涓鎸夐挳閮戒細鍏抽棴瀵硅瘽妗嗐備笅闈㈠湪璋冪敤 show 鏂规硶涔嬪墠鏉ヤ慨鏀逛竴涓 mHandler 鍙橀噺鐨勫硷紝 OK 锛屼笅闈㈡垜浠灏辨潵瑙佽瘉濂囪抗鐨勬椂鍒汇 try
{

Field field = alertDialog1.getClass().getDeclaredField( " mAlert " );
field.setAccessible( true );
// 鑾峰緱mAlert鍙橀噺鐨勫
Object obj = field.get(alertDialog1);
field = obj.getClass().getDeclaredField( " mHandler " );
field.setAccessible( true );
// 淇鏀筸Handler鍙橀噺鐨勫硷紝浣跨敤鏂扮殑ButtonHandler绫
field.set(obj, new ButtonHandler(alertDialog1));
}
catch (Exception e)
{
}
// 鏄剧ず瀵硅瘽妗
alertDialog.show(); 鎴戜滑鍙戠幇锛屽傛灉鍔犱笂try catch璇鍙ワ紝鍗曞嚮瀵硅瘽妗嗕腑鐨勭‘瀹氭寜閽涓嶄細鍏抽棴瀵硅瘽妗嗭紙闄ら潪鍦ㄤ唬鐮佷腑璋冪敤dismiss鏂规硶锛夛紝鍗曞嚮鍙栨秷鎸夐挳鍒欎細鍏抽棴瀵硅瘽妗嗭紙鍥犱负璋冪敤浜哾ismiss鏂规硶锛夈傚傛灉鍘讳簡try鈥catch浠g爜娈碉紝瀵硅瘽妗嗗張浼氭仮澶嶆e父浜嗐
铏界劧涓婇潰鐨勪唬鐮佸凡缁忚В鍐充簡闂棰橈紝浣嗛渶瑕佺紪鍐欑殑浠g爜浠嶇劧姣旇緝澶氾紝涓烘わ紝鎴戜滑涔熷彲閲囩敤鍙﹀栦竴绉嶆柟娉曟潵闃绘㈠叧闂瀵硅瘽妗嗐傝繖绉嶆柟娉曚笉闇瑕佸畾涔変换浣曠殑绫汇
杩欑嶆柟娉曢渶瑕佺敤鐐规妧宸с傜敱浜庣郴缁熼氳繃璋冪敤dismiss鏉ュ叧闂瀵硅瘽妗嗭紝閭d箞鎴戜滑鍙浠ュ湪dismiss鏂规硶涓婂仛鐐规枃绔犮傚湪绯荤粺璋冪敤dismiss鏂规硶鏃朵細棣栧厛鍒ゆ柇瀵硅瘽妗嗘槸鍚﹀凡缁忓叧闂锛屽傛灉瀵硅瘽妗嗗凡缁忓叧闂浜嗭紝灏变細閫鍑篸ismiss鏂规硶鑰屼笉鍐嶇户缁鍏抽棴瀵硅瘽妗嗕簡銆傚洜姝わ紝鎴戜滑鍙浠ユ洪獥涓涓嬬郴缁燂紝褰撹皟鐢╠ismiss鏂规硶鏃舵垜浠鍙浠ヨ╃郴缁熶互涓哄硅瘽妗嗗凡缁忓叧闂锛堣櫧鐒跺硅瘽妗嗚繕娌℃湁鍏抽棴锛夛紝杩欐牱dismiss鏂规硶灏卞け鏁堜簡锛岃繖鏍峰嵆浣跨郴缁熻皟鐢ㄤ簡dismiss鏂规硶涔熸棤娉曞叧闂瀵硅瘽妗嗕簡銆
涓嬮潰璁╂垜浠鍥炲埌AlertDialog鐨勬簮浠g爜涓锛屽啀缁х画璺熻釜鍒癆lertDialog鐨勭埗绫籇ialog鐨勬簮浠g爜涓銆傛壘鍒癲ismissDialog鏂规硶銆傚疄闄呬笂锛宒ismiss鏂规硶鏄閫氳繃dismissDialog鏂规硶鏉ュ叧闂瀵硅瘽妗嗙殑锛宒ismissDialog鏂规硶鐨勪唬鐮佸備笅锛 private void dismissDialog() {
if (mDecor == null ) {
if (Config.LOGV) Log.v(LOG_TAG,
" [Dialog] dismiss: already dismissed, ignore " );
return ;
}
if ( ! mShowing) {
if (Config.LOGV) Log.v(LOG_TAG,
" [Dialog] dismiss: not showing, ignore " );
return ;
} mWindowManager.removeView(mDecor); mDecor = null ;
mWindow.closeAllPanels();
onStop();
mShowing = false ;

sendDismissMessage();
}
璇ユ柟娉曞悗闈㈢殑浠g爜涓嶇敤绠″畠锛屽厛鐪 if(!mShowing){ 鈥 } 杩欐典唬鐮併傝繖涓 mShowing 鍙橀噺灏辨槸鍒ゆ柇瀵硅瘽妗嗘槸鍚﹀凡鍏抽棴鐨勩傚洜姝わ紝鎴戜滑鍦ㄤ唬鐮佷腑閫氳繃璁剧疆杩欎釜鍙橀噺灏卞彲浠ヤ娇绯荤粺璁や负瀵硅瘽妗嗗凡缁忓叧闂锛屽氨涓嶅啀缁х画鍏抽棴瀵硅瘽妗嗕簡銆傜敱浜 mShowing 涔熸槸 private 鍙橀噺锛屽洜姝わ紝涔熼渶瑕佸弽灏勬妧鏈鏉ヨ剧疆杩欎釜鍙橀噺銆傛垜浠鍙浠ュ湪瀵硅瘽妗嗘寜閽鐨勫崟鍑讳簨浠朵腑璁剧疆 mShowing 锛屼唬鐮佸備笅锛
try
{
Field field = dialog.getClass()
.getSuperclass().getDeclaredField(
" mShowing " );
field.setAccessible( true );
// 灏唌Showing鍙橀噺璁句负false锛岃〃绀哄硅瘽妗嗗凡鍏抽棴
field.set(dialog, false );
dialog.dismiss();}
catch (Exception e)
{}
灏嗕笂闈㈢殑浠g爜鍔犲埌鍝涓鎸夐挳鐨勫崟鍑讳簨浠朵唬鐮佷腑锛屽摢涓鎸夐挳灏卞啀涔熸棤娉曞叧闂瀵硅瘽妗嗕簡銆傚傛灉瑕佸叧闂瀵硅瘽妗嗭紝鍙闇鍐嶅皢 mShowing 璁句负 true 鍗冲彲銆傝佹敞鎰忕殑鏄锛屽湪涓涓鎸夐挳閲岃剧疆浜 mShowing 鍙橀噺锛屼篃浼氬奖鍝嶅彟涓涓鎸夐挳鐨勫叧闂瀵硅瘽妗嗗姛鑳斤紝鍥犳わ紝闇瑕佸湪姣忎竴涓鎸夐挳鐨勫崟鍑讳簨浠堕噷閮借剧疆 mShowing 鍙橀噺鐨勫笺 鏈鏂囨潵鑷狢SDN鍗氬锛岃浆杞借锋爣鏄庡嚭澶勶細 http://blog.csdn.net/nokiaguy/archive/2010/07/27/5770263.aspx

3. 如何进行源代码级的IDE调试

开发调试环境: Ubuntu 14.10,openJdk 1.7,Android Studio 1.0.2,android-5.0.1_r1源码
由于AS是基于IntelliJ IDEA开发的,所以本文也适用于IntelliJ IDEA
一、修改Android Studio(以下简称AS)的内存配置

因为在导入源码时需要消耗大量内存,所以先修改IDEA_HOME/bin/studio64.vmoptions(x86的机器修改studio.vmoptions)中-Xms和-Xmx的值。文档中使用的是748m, 可自行修改。
二、配置AS的JDK、SDK
在IDE中添加一个没有classpath的JDK, 这样可以确保使用源码里的库文件

并将其作为要使用的SDK的Java SDK。如下图

三、生成导入AS所需配置文件(*.ipr)
①编译源码(为了确保生成了.java文件,如R.java;如果编译过,则无需再次编译)
②检查out/host/linux-x86/framework/目录下是否有idegen.jar
如果idegen.jar不存在,执行:
mmm development/tools/idegen/

在5.0.1的源码中会生成res.java的文件夹,导致idegen.jar运行时抛FileNotFoundException,这是idegen的代码不够严谨造成的。
我的分享里有修改这个bug的patch,或者直接使用我分享的idegen.jar。
③执行
development/tools/idegen/idegen.sh

等待出现类似下面的结果:
Read excludes: 5ms
Traversed tree: 44078ms

这时会在源码的根目录下生成android.ipr和android.iml两个IntelliJ IDEA(AS是基于IntelliJ IDEA社区版开发的)的配置文件
Tips:
AS在导入代码时比较慢,建议先修改android.iml,将自己用不到的代码exclude出去.可以仿照过滤.repo文件夹的语法,如:
<excludeFolder url="file://$MODULE_DIR$/.repo" />
<excludeFolder url="file://$MODULE_DIR$/abi" />
<excludeFolder url="file://$MODULE_DIR$/art" />
这样在导入时就会跳过abi和art文件夹.过滤的越多,AS的处理速度就会越快.
④在AS中打开源码根目录下新生成的android.ipr

如果在导入时AS出现

则建议按照其给定的解决方法来解决(网址:http://confluence.jetbrains.com/display/IDEADEV/Inotify+Watches+Limit),具体内容如下图:

四、解决源码中跳转错误问题
①为当前工程设置正确的SDK和JDK

②设置'Moles'的依赖

先将所有依赖删掉,只留下上图'1'所指向的两个(注意:这里删除全部只是为了方便。如果确实用到了.jar,在将它们的路径添加进来就可以了.
如:5.0.1的ContactsCommon用到了geocoder-2.9.jar和libphonenumber-6.2.jar)
点击上图中'2'指向的'+'并选择上图'3'指向的'Jars or directories'选项,依次将frameworks和external文件夹添加进来.如:

其它版本的代码在添加frameworks时可能会显示成:

没有关系,只是显示问题,点击OK还是会把frameworks路径添加进去的.
如果还有代码跳转错误,请仿照上面的步骤将相应代码的路径或jar文件添加到其Dependencies标签页中即可.
五、DEBUG源码
我们可以通过给刚导入的工程在'Moles'中添加'Android Framework'来让AS将它作为一个Android工程,从而方便我们调试代码.

可以按照上图中'1'和'2'来添加Android Framework支持.

在代码中加断点,然后选择'Run'->'Attach debugger to Android process'或者直接点击下图所示的图标
在弹出的选择进程(Choose Process)对话框中,勾选显示所有进程,选择要DEBUG的代码所在的进程,点击OK即可.
六、其它
代码中很多地方提示Call requires API Level x.... 出现这个问题是因为AS将我们的工程当做安卓应用程序工程了,且源码中没有指定minSdkVersion.
我们只需在源码根目录加一个声明minSdkVersion的AndroidManifest.xml文件即可(分享了一个AndroidManifest.xml)。
也可以考虑使用build.gradle来解决该问题。

阅读全文

与安卓对话框源代码相关的资料

热点内容
苹果手机如何数据线连接电视 浏览:270
哪个版本的说文解字好 浏览:865
mysql数据库服务器初始化 浏览:625
word题注居中 浏览:345
s6新版本神器死亡之舞解析 浏览:399
金士顿128u盘拷文件速度才247kb 浏览:911
微信在电脑上怎么锁屏密码怎么设置密码 浏览:832
迷失版本服务端 浏览:936
安卓对话框源代码 浏览:550
什么是数据校验常见的有哪些 浏览:932
软件下载文件太大怎么办 浏览:863
word怎样打开ass文件 浏览:365
软银盛大网络 浏览:879
数据库系统第一代 浏览:606
免费学成语的app有哪些 浏览:670
怎么搜数控编程 浏览:440
怎么自制简单苹果面膜 浏览:247
西安一码通数据哪个部门管理 浏览:277
iso标准文件类型包括哪些 浏览:539
微信朋友圈收到最多赞 浏览:954

友情链接