2013-03-08 39 views
8

Tôi có một danh sách các chuỗi (được lưu trữ trong cơ sở dữ liệu, không phải là tài nguyên) và
Tôi muốn cho phép người dùng chỉnh sửa danh sách này. Điều này đủ dễ thực hiện với một số điện thoại thông thường Activity,
nhưng trong ứng dụng này danh sách phải là một phần của user preferences.
Về cơ bản đó là danh sách các câu mà người dùng muốn có sẵn để sử dụng.Bắt đầu một hoạt động từ PreferenceScreen

Vì tôi muốn cung cấp một giao diện người dùng phù hợp, tôi muốn thêm video này vào màn hình ưu tiên:

<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> 

Bây giờ chúng ta hãy nói rằng tôi có một làm việc đầy đủ Activity cho phép tôi để chỉnh sửa các văn bản trong cơ sở dữ liệu ,
Tôi có thể làm gì để khi người dùng nhấn vào mục 'PREF_PDT', Activity được sử dụng?

Tôi lấy nó Tôi sẽ phải thực hiện một số sửa đổi cho Activity
hoặc tạo chế độ xem Tùy chỉnh của một số loại?

Cập nhật: Vì vậy, chỉ để được rõ ràng, tôi không cần màn hình 'danh sách' để móc vào các cài đặt,
Tôi chỉ cần cung cấp cho người sử dụng cảm giác rằng họ vẫn còn trong các ưu đãi phần của ứng dụng (mà không vi phạm ngăn xếp điều hướng của khóa học). Nếu không, họ phải đi đến một nơi để chỉnh sửa một số cài đặt và đi đến một nơi khác để chỉnh sửa văn bản. Họ hy vọng tìm thấy mọi thứ trong 'cài đặt'

Cập nhật: Tôi đã đổi tên câu hỏi từ 'Màn hình Tuỳ chọn Tuỳ chỉnh để chỉnh sửa danh sách' vì rõ ràng những gì tôi đang cố gắng khởi chạy hoạt động từ một PreferenceScreen. Câu trả lời của sh404 giúp nhưng tôi không thể tìm thấy cú pháp đúng để tham chiếu đến Hoạt động tôi muốn luanch. Có lẽ đó là monodroid cụ thể. (ActivityNotFoundException)

+0

Bạn có thể muốn nhìn vào PreferenceFragments http: // nhà phát triển .android.com/tham chiếu/android/preferences/PreferenceFragment.html – Premsuraj

+0

Tôi không hoàn toàn chắc chắn cách giúp tôi – TimothyP

+0

Bản sao có thể có của [Khởi chạy hoạt động mới từ PreferenceActivity] (http://stackoverflow.com/questions/7041292/launch-new-activity-from-preferenceactivity) – Flow

Trả lời

16

ghi như thế này:

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

Nếu bạn cần phải vượt qua Extras Ý định:

<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> 

Tiếp theo bạn sẽ phải khai báo các Hoạt động trong AndroidManifest.xml
hoặc bạn có thể khai báo ý định int he preferences screen như sau:

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

Bằng cách này bạn không phải thực hiện bất kỳ thay đổi nào đối với AndroidManifest.

+0

Điều này rõ ràng những gì tôi đang tìm kiếm, nhưng tôi không thể nhận được phần 'hành động' đúng ... cho tôi biết nó không thể tìm thấy Hoạt động, có thể là cú pháp cụ thể của Monodroid, xem xét nó ngay bây giờ – TimothyP

+0

bạn cần khai báo hoạt động trong AndroidManifest .xml – sha256

+0

Ah ok ... sẽ xem xét điều đó, hãy để tôi lấy lại cho bạn trên đó – TimothyP

-1

Tôi đã gặp vấn đề tương tự nhưng không có giải pháp nào tôi tìm kiếm trên stackoverflow đã giải quyết Ngoại lệ activitynotfound của tôi.

Dưới đây là giải pháp làm việc tôi tìm thấy từ here:

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

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

</PreferenceScreen> 

thiết lập một bộ lọc ý định trong hoạt động của bạn trong manifest.xml

<activity ...> 
      <intent-filter> 
       <action android:name="your.action.string"/> 
       <category android:name="android.intent.category.DEFAULT" /> 
      </intent-filter> 
</activity> 
Các vấn đề liên quan