我有一些主要活动并点击一个按钮就会启动一个自定义对话框窗口。在对话框中,我有一个“发送电子邮件”按钮,当用户点击按钮时,它会调用电子邮件选择器(通过简单的方法调用)。
sendEmail();
这是sendEmail()方法
public void sendEmail() {
String email = "some.email@gmail.com";
Intent emailIntent = new Intent(android.content.Intent.ACTION_SEND);
emailIntent.setType("text/plain");
emailIntent.putExtra(android.content.Intent.EXTRA_EMAIL, new String[]{email});
emailIntent.putExtra(android.content.Intent.EXTRA_SUBJECT, "Subject");
emailIntent.putExtra(android.content.Intent.EXTRA_TEXT, "Message");
mContext.startActivity(Intent.createChooser(emailIntent, "Choose an email"));
}
但是在我的HTC Desire(2.2)上,有时对话框开始闪烁。我只是不能点击任何东西,我必须退出一个应用程序或者我只是在横向和后面旋转它然后闪烁/闪烁停止。
问题出在哪里?为什么会眨眼?
更新:我尝试将“多次调用”记录到sendEmail函数或CreateDialog构造函数但是没有,一切都只调用一个,之后我在我的日志中有这个......我可以解决它做另一个活动,就像对话,但我想知道这里的问题在哪里:/
登录
02-15 19:06:45.605 D/SurfaceFlinger( 92): Layer::setBuffers(this=0x9a9478), pid=12757, w=1, h=1
02-15 19:06:45.605 D/SurfaceFlinger( 92): Layer::setBuffers(this=0x9a9478), pid=12757, w=1, h=1
02-15 19:06:45.675 D/SurfaceFlinger( 92): Layer::requestBuffer(this=0x92b350), index=1, pid=12757, w=443, h=337 success
02-15 19:06:45.715 D/SurfaceFlinger( 92): Layer::requestBuffer(this=0x9a9478), index=0, pid=12757, w=480, h=762 success
02-15 19:06:45.755 I/UsageStats( 92): Unexpected resume of android while already resumed in android
02-15 19:06:45.815 D/SurfaceFlinger( 92): Layer::setBuffers(this=0x9a9478), pid=12757, w=1, h=1
02-15 19:06:45.815 D/SurfaceFlinger( 92): Layer::setBuffers(this=0x9a9478), pid=12757, w=1, h=1
02-15 19:06:45.895 D/SurfaceFlinger( 92): Layer::requestBuffer(this=0x9a9478), index=0, pid=12757, w=480, h=762 success
答案 0 :(得分:1)
我一直在搞乱同样的问题(切换方向后选择器闪烁)。最后结果是因为我在我的应用程序上使用自定义区域设置(如here所述)。
我在我的活动的每个onCreate上做了这个替换它&小部件(在调用super.onCreate()之前):
Configuration config = getBaseContext().getResources().getConfiguration();
String lang = "en"; //replace by your own method of getting user language
locale = new Locale(lang);
Locale.setDefault(locale);
config.locale = locale;
getBaseContext().getResources().updateConfiguration(config, getBaseContext().getResources().getDisplayMetrics());
当然,你可以把它打包成一个方法,所以你只需要调用它。
这样,选择器就会停止闪烁。
答案 1 :(得分:0)
闪烁的声音就像娱乐......你试图在设备上调试应用程序吗?可能会在sendMail()
中添加一些日志,以便您了解它的频率
答案 2 :(得分:0)
这解决了问题,实际问题我不知道。
更改此
startActivity(Intent.createChooser(emailIntent,this.getString(R.string.someString)));
到这个
startActivity(emailIntent);