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.Light
和Theme.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!");
}
答
你有没有试过用一些意向性的构造,它使用上下文?这可能是如何将主题传递给对话的方式。
我已经想过了。创建对话框时使用错误的上下文会使对话框变黑。但在这种情况下,它不是一个解决方案,因为使用上下文的构造函数针对特定的类。 – 2012-02-21 21:10:36