7

私はnレイヤPreferenceActivitiesを実装しています 第1レイヤPreferenceActivityはプリファレンスヘッダーからロードされます。プリファレンスヘッダーからアクティビティを開始

最初のヘッダーはPreferenceFragmentである設定の断片を作成します。次に、指定されたURLを開くブラウザアクティビティ(2番目はdeveloper.android.comの例)です。 3番目のものは、PreferenceAtivityの次のレベルになりたいもので、これもプリファレンスヘッダーからロードされます。

まず2つの作業罰金が、第三の例外を除いて、アプリケーションをクラッシュさ:

「android.content.ActivityNotFoundException:いいえ活動はテント{行為= android.intent.action.VIEW DAT = com.mycompanyを処理することが判明.myapp.ui.MyPreferenceActivity} "

マニフェストファイルで宣言されたMyPreferenceActivity。おそらく、main_headers.xmlのアクティビティの宣言は間違っていますが、正しい方法でヒントを見つけられませんでした。いくつかのバリエーションを試してみたが、うまくいかなかった。

例は、私が使用:または次PreferenceActivityがどのようにhttp://developer.android.com/reference/android/preference/PreferenceActivity.html

それは私のために動作しませんなぜ任意の考えを呼び出すことができますか? 基本的には、ヘッダーからアクティビティを開始する必要があります。これは本当にシンプルなはずですが、何か不足しています。

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> 

答えて

17

あなたは第三の好みから明示的に活動を開始したい場合は、この操作を行います。あなたは、Javaを使用して設定を作成している場合、その後、

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

が、私はこれが古い問題であることを認識mainfestファイルに以下のコードを追加します。デフォルトのAndroidパッケージのインテントを指定する方法を知っていますか?例えば'Settings.ACTION_ADD_ACCOUNT'? – Jin

+0

私と協力しました、ありがとう –

0

を次のように同じ結果を得ることができます。

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> 

<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> 
関連する問題