3

我將以一個示例開始......如果您轉至設置>應用程序>管理應用程序,將打開一個新屏幕,其中包含已安裝應用程序的列表:如果您單擊列表中的任何應用程序,它將打開一個包含應用程序信息的新屏幕。我應該爲每個屏幕創建一個活動嗎?

那麼,我的應用程序的一些設置必須通過列表來管理,並且此列表應該像上面的示例一樣。我已經創建了一個帶有一些類別的PreferenceActivity,每個類別都有一些項目:當我點擊其中一個項目時,我希望它打開一個新的屏幕,新數據放置在列表中,就像上面例子的應用。此外,當我點擊此列表的任何條目時,它將打開一個新的屏幕以設置一些數據。

我該如何繼續?我應該爲每個屏幕創建一個活動嗎?

+1

一旦你感覺到了這一點,你也應該看看片段,它們在較早版本的操作系統中通過支持庫支持,例如2.3可以使用單個活動模型,但也可以利用片段3.0+現在不要混淆視聽:-)但是當它開始凝膠時,看看它吧 – Idistic 2012-04-26 00:00:08

+0

按照我承諾的做了編輯! – Carnal 2012-04-27 07:14:36

+0

@Carnal:謝謝你的例子! – enzom83 2012-04-27 08:47:41

回答

1

請參閱...如果用戶想要從某個點返回到之前的位置......如果您爲他們每個人創建了單獨的活動......目前的活動將彈出堆棧...讓前一個活動被顯示......如果你正在改變每個新屏幕的列表內容......而不是創建新的活動......那麼用戶很難回來......你應該一次又一次地改變適配器的內容.. 所以我認爲..爲每個屏幕創建單獨的活動更好..(和你可以使用相同的[任何自定義佈局,如果你有]佈局文件的所有活動..)

2

這可以說是最好的辦法,至少如果你沒有在做一個嚮導風格的活動。

使用ListActivity顯示您的列表,並使用intents將數據傳入和傳出此活動。

2

我能夠在工作中實現這一點,我現在頭腦中不記得我是如何實現它的,很久以前。但是,如果沒有人爲您提供一個好的答案,我會在明天發佈,但我記得將一個偏好設置爲按鈕,然後添加一個preferenceClickListener以便在點擊時打開一個新的偏好設置屏幕。但是就像我說的,如果你沒有得到滿意的答案,明天我會爲你發佈。

祝你好運!

UPDATE:

?xml version="1.0" encoding="utf-8"?> 
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"> 
<PreferenceCategory 
    android:title="Personal" 
    android:key="personal_category"> 
    <Preference 
     android:key="birth" 
     android:title="Birth" 
     android:summary="Choose your birthday"/> 
    <PreferenceScreen 
     android:key="height_imp" 
     android:title="Height" 
     android:summary="Enter your height"> 
     <EditTextPreference 
      android:key="foot" 
      android:title="Foot" 
      android:summary="foot" 
      android:numeric="integer" 
      android:dialogTitle="Foot"/> 
     <EditTextPreference 
      android:key="inch" 
      android:title="Inch" 
      android:summary="inch" 
      android:numeric="integer" 
      android:dialogTitle="Inch"/> 
    </PreferenceScreen> 
    <EditTextPreference 
     android:key="weight" 
     android:title="Weight" 
     android:summary="Enter your weight" 
     android:numeric="integer" 
     android:dialogTitle="Weight"/>  
</PreferenceCategory> 
</PreferenceScreen> 

這就是它!當你點擊它時,它會帶你到第二個PreferenceScreen等等,最後當你需要定製你的佈局時,你需要打開一個活動。 然後,您可以使用偏好並添加onPreferenceClick:

@Override 
public boolean onPreferenceClick(Preference preference) { 
    if(preference == birth){ 
     startActivity(new Intent(getBaseContext(), Birth.class)); 
    } 
    if(preference == height_imp){ 
     PreferenceScreen a = (PreferenceScreen) preference; 
     a.getDialog().getWindow().setBackgroundDrawable(new ColorDrawable(Color.WHITE)); 
     return false; 
    } 
    return true; 
} 

如果您需要更改背景或別的東西與preferenceScreen,然後添加一個preferenceClickListener還有:height_imp = (PreferenceScreen)getPreferenceScreen().findPreference("height_imp"); height_imp.setOnPreferenceClickListener(this);

3

的Android創建這種方式,根據文檔「一項活動是用戶可以完成的一項單一的,重點突出的事情」,所以是的,您應該爲每個屏幕開展一項活動。 隨着Honeycomb與Fragments的推出,這一點有所改變,但如果您沒有開發平板電腦,您應該保持一個頁面,一個Android的活動心態。

+0

我使用Android 2.3 – enzom83 2012-04-25 19:27:17

3

一般來說,你必須通過其他每個活動呼叫,主叫方被壓入堆棧(除非調用活動要求的被刪除),並進入休眠,直到它返回

基本上你創建活動的AN意圖啓動活動B,您可以使用startActivityForResult與在意圖例演員傳遞數據:How to pass data between activities

當按下後退按鈕,然後以前的活動再次變得活躍和結果處理您設置可以得到任何回報數據。

如果您想提供看起來更好並且表現更好的平板電腦支持,您也可以查看支持API中的片段。

相關問題