2011-02-28 60 views
12

有誰知道是否可以將參數傳遞到AndroidManifest.xml文件的Activity中?我想在幾個應用中使用相同的活動,但是可以根據應用調整該活動的外觀。Android:將參數傳遞到AndroidManifest.xml的Activity中

E.g.我想寫點東西像(在AndroidManifest.xml)

<activity android:name=".MyActivity" 
       android:label="@string/app_name" 
       android:screenOrientation="portrait"> 

     <extradata> 
       <item name="foo" value="bar"/> 
     </extradata> 
</activity> 

..並能夠讀出條的值在活動的onCreate。這是可以用intent過濾器中的data屬性完成的事情嗎?

謝謝,

回答

8

其實,有辦法做到這一點。檢查這篇文章:

http://blog.iangclifton.com/2010/10/08/using-meta-data-in-an-androidmanifest/

總之你可以使用獲得標籤的內容是:

ApplicationInfo ai = getPackageManager().getApplicationInfo(activity.getPackageName(),  PackageManager.GET_META_DATA); 
Bundle bundle = ai.metaData; 
String myApiKey = bundle.getString("my_api_key"); 

元數據標籤的定義是這樣的:

<meta-data android:name="my_api_key" android:value="mykey123" /> 

有可能以訪問值中的數據,但如果您想指定與活動相關的內容,則這是更簡潔的方法。

希望它有幫助。

0

我不認爲有辦法做到這一點。 (一個糟糕的黑客可能是使用活動的進程名稱來表示這樣的信號。)更好的方法是在每個應用程序中指定一個包含活動所需信息的標準資源。

1

使用res/values/strings.xml

將相關數據保存到這裏。使用出頭像

<string-array name = "foo"> 
<item>bar1</item> 
<item>bar2</item> 
<item>red</item> 
<item>blue</item> 
<item>one</item> 
<item>two</item> 
</string-array> 

然後你可以使用

Resources r; 

r = getResources(): 

String[] foos = r.getStringArray(R.array.foo); 

得到這個我覺得這是你在找什麼。但是如果你想要設計你的應用程序,那麼你應該看看使用主題。

[主題爲Android的範例] [1]

[1]:http://www.androidengineer.com/2010/06/using-themes-in-android-applications.html 「的主題EXAMPLE」