7

Tôi đang triển khai các lớp PreferenceActivities Ưu tiên lớp thứ nhấtKích hoạt được tải từ các tiêu đề tùy chọn.Bắt đầu hoạt động từ các tiêu đề ưu tiên

Tiêu đề đầu tiên tạo phân đoạn của các cài đặt là một PreferenceFragment. Thứ hai là một hoạt động trình duyệt (thứ 2 là một ví dụ từ developer.android.com) mở ra Url được chỉ định. Điều thứ ba tôi muốn là cấp độ ưu tiên tiếp theo cũng sẽ được tải từ các tiêu đề ưu tiên.

Đầu tiên hai công việc tốt, nhưng thứ 3 là đâm một ứng dụng với các ngoại lệ:

"android.content.ActivityNotFoundException: Không Hoạt động phát hiện để xử lý Ý định {hành động = android.intent.action.VIEW dat = com.mycompany .myapp.ui.MyPreferenceActivity} "

MyPreferenceActivity được khai báo trong tệp kê khai. Có lẽ khai báo hoạt động trong main_headers.xml là sai, nhưng tôi đã không tìm thấy trong tài liệu tham khảo bất kỳ mẹo làm thế nào để làm điều đó đúng. Đã thử một số biến thể, chúng không hoạt động.

Ví dụ tôi sử dụng: http://developer.android.com/reference/android/preference/PreferenceActivity.html

Bất kỳ suy nghĩ tại sao nó không làm việc cho tôi hay như thế nào PreferenceActivity tiếp theo có thể được gọi là? Về cơ bản, tôi chỉ cần bắt đầu một hoạt động từ tiêu đề, điều đó thực sự đơn giản nhưng tôi thiếu một số thứ.

public class MySettings extends PreferenceActivity 
{ 
    @Override 
    public void onBuildHeaders(List<Header> target) 
    { 
     loadHeadersFromResource(R.xml.main_headers, target); 
    } 
} 

main_headers.xml:

<?xml version="1.0" encoding="utf-8"?> 
<preference-headers 
    xmlns:android="http://schemas.android.com/apk/res/android" > 

    <header android:title="Custom Settings" 
     android:fragment="com.mycompany.myapp.ui.SettingsFragment" /> 

    <header android:title="Intent" 
     android:summary="Launches an Intent."> 
     <intent android:action="android.intent.action.VIEW" 
       android:data="http://www.android.com" /> 
    </header> 

    <header android:title="Another Preference Activity"> 
     <intent android:action="android.intent.action.VIEW" 
      android:data="com.mycompany.myapp.ui.MyPreferenceActivity" /> 
    </header> 
</preference-headers> 

Trả lời

17

Nếu bạn muốn bắt đầu một Hoạt động rõ ràng từ sở thích thứ ba của bạn sau đó làm điều này:

<intent android:targetPackage="com.mycompany.myapp" 
     android:targetClass="com.mycompany.myapp.ui.MyPreferenceActivity" /> 
+0

tôi nhận ra rằng đây là một câu hỏi cũ. Bạn có biết cách xác định ý định cho gói Android mặc định không? ví dụ. 'Cài đặt.ACTION_ADD_ACCOUNT'? – Jin

+0

Làm việc với tôi, Cảm ơn –

0

nếu bạn đang tạo ưu đãi về sử dụng java, sau đó bạn có thể đạt được kết quả tương tự theo,

PreferenceScreen editPhoneNumbersScreen = getPreferenceManager().createPreferenceScreen(mContext); 
    editPhoneNumbersScreen.setTitle(getResources().getString(R.string.change_add_emergency_numbers)); 
    editPhoneNumbersScreen.setSummary(getResources().getString(R.string.summary_add_no)); 


Intent i = new Intent(getApplicationContext(),TargetActivity.class); 
i.putExtra("change numbers", true); 
     editPhoneNumbersScreen.setIntent(i); 
0
<header android:title="Intent" 
    android:summary="Launches an Intent."> 
<intent android:targetPackage="com.mycompany.myapp" 
     android:targetClass="com.mycompany.myapp.ui.MyPreferenceActivity" /></header> 

và thêm đoạn mã sau trong tập tin mainfest

<activity android:name=".activities.MyActivity" 
       android:label="@string/my_activity_title" 
       android:theme="@android:style/Theme.Black.NoTitleBar"> 
     <intent-filter> 
      <action android:name="com.example.myapp.activities.MyActivity" /> 
      <category android:name="android.intent.category.DEFAULT" /> 
     </intent-filter> 
    </activity> 
Các vấn đề liên quan