闪烁的电子邮件选择器

时间:2011-02-14 17:11:01

标签: android email

我有一些主要活动并点击一个按钮就会启动一个自定义对话框窗口。在对话框中,我有一个“发送电子邮件”按钮,当用户点击按钮时,它会调用电子邮件选择器(通过简单的方法调用)。

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

3 个答案:

答案 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);