通过反射重新设置Dialog:
//通过反射得到dialog对象
field = dialog.getClass().getSuperclass().getDeclaredField(“mShowing”);
filed.setAccessible(true);//取消默认 Java 语言访问控制检查,这样可以调用外部的private方法
field.set(dialog, true);//dialog消失
field.set(dialog, false);//dialog不消失
代码示例, 使用showDialog(int dialogid)方法提示是否清空EdutText的内容:
public classDialogTest extends Activity {
private static final int DIALOG_CLEAN = 1; // 清空文字
private EditText edit; //要提交的内容
@Override
protected void onCreate(Bundle icicle) {
super.onCreate(icicle);
setContentView(R.layout.bbs_topic_new_activity);
//初始化控件
...
edit.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
clean();
}
});
}
@Override
protected Dialog onCreateDialog(int id) {
Builder builder = null;
switch (id) {
case DIALOG_CLEAN:
builder = new AlertDialog.Builder(this)
.setTitle("提示")
.setMessage("确认清除全部内容?")
.setPositiveButton("确定",
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog,
int which) {
edit.setText("");
}
})
.setNeutralButton("取消",
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog,
int which) {
disappearDialog(dialog);
}
});
break;
default:
break;
}
return builder.create();
}
/**
* 清除文字
*/
private void clean() {
String content = edit.getText().toString();
if (!content.equals("")) {
showDialog(DIALOG_CLEAN);
}
}
private void disappearDialog(DialogInterface dialog) {
try {
Field field = dialog.getClass().getSuperclass()
.getDeclaredField("mShowing");
field.setAccessible(true);
field.set(dialog, true);
} catch (Exception e) {
e.printStackTrace();
}
}
}
-
分享到:
相关推荐
通过反射,我们可以访问并修改这个变量的值,从而达到控制Dialog关闭与否的目的。 首先,我们需要获取到Dialog的`mShowing`字段。由于它是私有的,所以我们需要设置`field.setAccessible(true)`使其可访问: ```...
总结起来,Android Dialog的字体大小调整可以通过多种途径实现,包括反射、自定义布局或直接操作Dialog的View。每种方法都有其优缺点,开发者应根据项目需求和团队规范选择最适合的方法。需要注意的是,尽管可以灵活...
Dialog标题与按钮颜色修改是 Android 开发中的一项常见需求,对于 Dialog 的标题和按钮颜色的修改可以通过多种方式实现。本文将对 Dialog 标题和按钮颜色的修改进行详细的介绍,并提供示例代码供大家参考学习。 一...
截图功能通常通过反射调用`View`的`drawToBitmap()`方法,然后保存到本地。这里需要注意的是,截图可能涉及到安全问题,需要确保只对授权的视图进行截图: ```java private void takeScreenshot() { try { View ...
在上面的代码中,我们首先通过反射创建了一个`AlertDialog.Builder`,然后设置了自定义的布局,该布局包含一个`ListView`和相应的单选按钮。接着,我们填充了列表数据,并设置了一个点击监听器。最后,通过反射调用`...
此外,MFC的事件驱动模型也在此发挥作用,当用户在界面上进行操作时,对应的控件会发送消息,通过消息映射和反射机制,这些消息会被转发到相应的处理函数,完成指定的数据操作。 总的来说,这个"MFC_DLOGIN_NEW_...
java注解、反射和动态代理 简易Android Retrofit和Butter Knife 框架 https://blog.csdn.net/soulshui/article/details/123332183?spm=1001.2014.3001.5501
// 通过反射获取Dialog的私有属性mShowing field = dialog.getClass().getSuperclass().getDeclaredField("mShowing"); field.setAccessible(true); // 设置该属性可访问 } catch (Exception ex) {} String ...
在内部,ProgressDialog使用了一个ProgressDrawable对象来绘制进度条,我们可以通过反射或者自定义DialogFragment来修改这个drawable,以实现更复杂的进度条效果。 然而,随着Android版本的更新, ProgressDialog在...
【实例简介】 ... /// 窗体的程序集全路径名,例如"UserUI.Dialog.dynMenuSteup" /// 窗体的构造参数 /// 是否为模态窗体显示方式 public void CreateFormAndShow(string dllPathName, string AssemblyNam
通过反射访问`ActivityThread`类的内部结构,如`mActivities`字段,从中找到未暂停的`ActivityRecord`并返回对应的`Activity`实例。以下是一个简单的反射实现示例: ```java public static Activity getActivity() ...
当用户选择新皮肤时,调用`setTheme()`方法并重新启动Activity,使其应用新的主题。 3. **实现全局皮肤更换**: - 要在整个应用程序中切换皮肤,可以在Application类中管理当前主题,并在每个Activity的`onCreate...
综上所述,通过自定义主题、设置属性、反射修改内部样式以及创建自定义Dialog,我们可以成功地更改TimePicker和DatePicker的样式,调整字体大小和颜色,同时实现类似iOS滑动选择器的效果。这不仅可以提升应用的视觉...
3. 自然语言理解和生成:JavaScript库如wit.ai、apiai(现为Dialogflow)或Microsoft Bot Framework可以处理从语音识别得到的文本,理解用户的意图并生成相应的回应。这些库提供了丰富的语义解析和对话管理功能,...
在自定义来电秀中,反射可能被用来访问或修改系统私有的来电显示服务,因为这些服务通常不对外开放,开发者需要通过反射来绕过这一限制。 1. **权限申请**:在AndroidManifest.xml中,需要声明必要的权限,如读取...
GenjiDialog 基于kotlin的通用dialog 开始用kotlin开发之后, 发现很多东西都能简化,...解决方式:改写show方法,通过反射拿到状态值,然后在dismiss和show的时候仅使用dialog的方法 注意事项:由于这样做,会使dial
- 如何通过反射或其他手段自定义Spinner的默认行为,比如改变下拉菜单的动画效果。 在实际开发中,有时候我们可能需要实现更复杂的功能,比如动态加载数据、支持搜索等。这时,博客作者可能会分享一些工具或技巧,...
获取标题栏和状态栏的高度可以通过反射的方式实现,也可以使用`getStatusBarHeight()`和`getTitleBarHeight()`等自定义方法。 #### 16. 开机自动启动 实现开机自启动功能需要注册一个BroadcastReceiver并设置启动...
不过,我们可以通过反射或者第三方库来实现类似的功能。 一个常见的第三方库是`android-color-picker`,它提供了一个易于使用的颜色选取对话框。通过集成此库,开发者可以快速添加颜色选取功能到自己的应用中。使用...
例如,一个设置水波参数的对话框,用户可以通过它调整波浪的频率、振幅、速度等参数,以达到理想的视觉效果。 综上所述,水波效果是一种广泛应用于各种领域的图形技术,通过各种方法和技术实现,为用户带来了更丰富...