2012-02-21 33 views
2

我的應用程序使用了光的主題,但與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,但它只是不工作。

如何使選配使用光主題?

回答

1

我懷疑,因爲它屬於系統,而不是你的應用程序,你無法控制選配的顏色。不過,我看不出有任何理由,你爲什麼不能在隨後的主題的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

你有沒有試過用一些意向性的構造,它使用上下文?這可能是如何將主題傳遞給對話的方式。

+0

我已經想過了。創建對話框時使用錯誤的上下文會使對話框變黑。但在這種情況下,它不是一個解決方案,因爲使用上下文的構造函數針對特定的類。 – 2012-02-21 21:10:36