2013-03-08 19 views
8

Mam listę ciągów (przechowywanych w bazie danych, a nie jako zasób) i
Chcę zezwolić użytkownikowi na edycję tej listy. Jest to dość łatwe do zrobienia ze zwykłym Activity,
, ale w tej aplikacji ta lista powinna być częścią user preferences.
Zasadniczo jest to lista zdań, które użytkownik chce mieć do dyspozycji.Rozpocznij działanie z PreferenceScreen

ponieważ chcę, aby zapewnić spójny interfejs użytkownika, chcę dodać to do ekranu preferencji:

<PreferenceScreen xmlns:android="..."> 
    <!-- Some other categories and preferences here --> 
    <PreferenceScreen android:key="PREF_PDT" 
         android:title="Predefined Texts" 
         android:summary="View and edit the list of predefined texts"> 
    </PreferenceScreen> 
    <!-- Some other categories and preferences here --> 
<PreferenceScreen> 

Teraz powiedzmy mam całkowicie pracy Activity że pozwala mi edytować teksty w bazie danych ,
co mogę zrobić, aby po dotknięciu elementu "PREF_PDT" użyto Activity?

Podejmij wyzwanie Będę musiał wprowadzić pewne modyfikacje do Activity
lub utworzyć niestandardowy widok preferencji?

Aktualizacja: Więc po prostu być jasne, ja nie potrzebuję ekran „list” do podłączenia do ustawień,
po prostu trzeba dać użytkownikowi wrażenie, że są one nadal w preferencjach części wniosku (oczywiście bez łamania stosu nawigacji). W przeciwnym razie muszą przejść do jednego miejsca, aby edytować niektóre ustawienia i przejść do innego miejsca, aby edytować teksty. Oczekują oni znaleźć wszystko pod

Aktualizacji „Ustawienia”: Mam przemianowany na pytanie z „ekranie Preference niestandardowej edytować listę elementów”, jak to jest teraz jasne, że to, co próbuję zrobić, to zapoczątkować aktywność z PreferenceScreen. Odpowiedź sh404 pomaga, ale nie mogę znaleźć odpowiedniej składni odnoszącej się do działania, które chcę luanch. Być może jest to specyficzne dla monodroidów. (ActivityNotFoundException)

+0

może warto spojrzeć na PreferenceFragments http: // developer .android.com/reference/android/preference/PreferenceFragment.html – Premsuraj

+0

Nie jestem do końca pewien, jak mi to pomaga – TimothyP

+0

Możliwy duplikat [Uruchom nową aktywność z PreferenceActivity] (http://stackoverflow.com/questions/7041292/launch-new-activity- from-preferenceactivity) – Flow

Odpowiedz

16

pisać tak:

<Preference 
    android:key="mykey" 
    android:title="TheTitle" 
    android:summary="summary here" > 
    <intent android:action="net.hasnath.android.MyActivity"/> 
</Preference> 

Jeśli trzeba przejść intent Dodatki:

<Preference 
    android:key="mykey" 
    android:title="TheTitle" 
    android:summary="summary here" > 
    <intent android:action="net.hasnath.android.MyActivity"> 
     <extra android:name="extra_name" android:value="my_value" /> 
     <extra android:name="extra_2_name" android:value="my_value_2"/> 
    </intent> 
</Preference> 

Następny będziesz musiał zadeklarować aktywność w AndroidManifest.xml
lub możesz zadeklarować intencję na ekranie preferencji:

<intent android:targetPackage="net.hasnath.android" 
     android:targetClass="net.hasnath.android.MyActivity"/> 

W ten sposób nie musisz wprowadzać żadnych zmian w AndroidManifest.

+0

To jest oczywiście czego szukam, ale nie mogę uzyskać części "akcji" poprawnie ... mówi mi, że nie może znaleźć działania, może być specyficzna dla Monodroida składnia, patrząc na nią teraz – TimothyP

+0

musisz zadeklarować aktywność w AndroidManifest .xml – sha256

+0

Ach ok ... przyjrzę się temu, pozwól mi wrócić do ciebie na nim – TimothyP

-1

Miałem ten sam problem, ale żadne z rozwiązań szukanych na stackoverflow nie rozwiązało mojego działania nota Wyjątek.

Oto roztwór roboczy znalazłem z here:

<PreferenceScreen 
       android:title="@string/title_intent_preference" 
       android:summary="@string/summary_intent_preference"> 

      <intent android:action="your.action.string"/> 

</PreferenceScreen> 

ustawić filtr woli w swojej działalności wewnątrz manifest.xml

<activity ...> 
      <intent-filter> 
       <action android:name="your.action.string"/> 
       <category android:name="android.intent.category.DEFAULT" /> 
      </intent-filter> 
</activity> 
Powiązane problemy