12

文字列のリスト(リソースとしてではなくデータベースに保存されている)があり
、ユーザーがこのリストを編集できるようにしたい。Activityこれは通常ので行うのに十分簡単です
が、このアプリケーションでは、そのリストはの一部である必要がありuser preferencesます。
基本的には、ユーザーが使用できるようにしたい文のリストです。

一貫性のあるUIを提供したいので、これを設定画面に追加します。

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

Activityここで、データベース内のテキストを編集できるように完全に機能しているとしましょう。
ユーザーが「PREF_PDT」アイテムをタップしたときに使用されるようにするにはどうすればよいActivityですか?

いくつかの変更を加えるかActivity
、ある種のカスタム設定ビューを作成する必要がありますか?

更新:明確にするために、設定にフックするための「リスト」画面は必要ありません
。ユーザーに、アプリケーションの設定部分にまだいるという印象を与える必要があります(のナビゲーションスタックを壊すことなく)コース)。それ以外の場合は、ある場所に移動して設定を編集し、別の場所に移動してテキストを編集する必要があります。彼らは「設定」の下ですべてを見つけることを期待しています

更新:質問の名前を「カスタム設定画面からアイテムのリストを編集する」に変更しました。これは、私がやろうとしているのがPreferenceScreenからアクティビティを起動することであることが明らかだからです。sh404の答えは役に立ちますが、私が探しているアクティビティを参照するための正しい構文が見つかりません。おそらくそれはモノドロイド特有です。(ActivityNotFoundException)

4

3 に答える 3

22

このように書く:

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

インテントエクストラを渡す必要がある場合:

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

次に、AndroidManifest.xmlでアクティビティを宣言する必要があります。
または、次のように設定画面でインテントを宣言できます。

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

このようにして、AndroidManifestに変更を加える必要はありません。

于 2013-03-08T06:35:42.080 に答える
-1

私は同じ問題を抱えていましたが、stackoverflow で検索した解決策のどれも私の activitynotfound Exception を解決しませんでした。

ここから見つけた実用的なソリューションは次のとおりです。

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

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

 </PreferenceScreen>  

manifest.xml 内のアクティビティにインテント フィルタを設定する

    <activity ...>  
            <intent-filter>  
                <action android:name="your.action.string"/>  
                <category android:name="android.intent.category.DEFAULT" />  
            </intent-filter>  
</activity>
于 2013-06-05T15:04:06.323 に答える