intent.createChooser始终显示暗对话框

intent.createChooser始终显示暗对话框

问题描述:

我的应用程序使用了光的主题,但与Intent.createChooser()创建对话框始终是黑暗的。 我写了一个测试程序,它只是显示的对话框:intent.createChooser始终显示暗对话框

public class AsdActivity extends Activity { 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 

     Intent intent = new Intent(Intent.ACTION_SEND); 
     intent.setType("text/plain"); 
     intent.putExtra(Intent.EXTRA_SUBJECT, new String[]{"abc"}); 
     intent.putExtra(Intent.EXTRA_TEXT, "blah"); 

     startActivity(Intent.createChooser(intent, "aaa"));   
    } 
} 

我试图Theme.LightTheme.Holo.Light,但它只是不工作。

如何使选配使用光主题?

我怀疑,因为它属于系统,而不是你的应用程序,你无法控制选配的颜色。不过,我看不出有任何理由,你为什么不能在随后的主题的AlertDialog实现自己的选配。这里有一个代码片段,它提取了一个列表,可以用来填充对话框:

PackageManager packageManager = getPackageManager(); 

Intent intent = new Intent(Intent.ACTION_SEND); 
intent.setType("text/plain"); 
intent.putExtra(Intent.EXTRA_SUBJECT, new String[] { "abc" }); 
intent.putExtra(Intent.EXTRA_TEXT, "blah"); 

List<ResolveInfo> list = packageManager 
    .queryIntentActivities(intent, 0); 

if (list.size() > 0) { 
    StringBuilder outStr = new StringBuilder("Available receivers:"); 
    for (ResolveInfo resolveInfo : list) { 
     outStr.append("\n"); 
     outStr.append(resolveInfo.loadLabel(packageManager)); 
    } 
    tv.setText(outStr); 
} else { 
    tv.setText("No available receivers!"); 
} 

你有没有试过用一些意向性的构造,它使用上下文?这可能是如何将主题传递给对话的方式。

+0

我已经想过了。创建对话框时使用错误的上下文会使对话框变黑。但在这种情况下,它不是一个解决方案,因为使用上下文的构造函数针对特定的类。 – 2012-02-21 21:10:36