4

基本的なグーグルリソースフォルダからRSSフィードアプリケーションを開発し ています。現在、例として提案されているように、3つのコンテンツすべてを表示しています。

1.連絡先。2.写真。3.RSSフィード

ここにリンクがあります:

RSSフィールド-xmladapters

私は自分の要件に従ってコードを非常にうまく管理しました。パッケージとプロジェクト名のみを変更してください。しかし、その表示は致命的なエラーです:

LOGCAT:

 04-09 17:40:02.894: E/AndroidRuntime(770): FATAL EXCEPTION: main
    04-09 17:40:02.894: E/AndroidRuntime(770): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.satyamdswt.agreader/com.satyamdswt.agreader.ContactsListActivity}: java.lang.IllegalArgumentException: The layout specified in contacts does not exist
    04-09 17:40:02.894: E/AndroidRuntime(770):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1647)
    04-09 17:40:02.894: E/AndroidRuntime(770):  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1663)
    04-09 17:40:02.894: E/AndroidRuntime(770):  at android.app.ActivityThread.access$1500(ActivityThread.java:117)
    04-09 17:40:02.894: E/AndroidRuntime(770):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:931)
    04-09 17:40:02.894: E/AndroidRuntime(770):  at android.os.Handler.dispatchMessage(Handler.java:99)
    04-09 17:40:02.894: E/AndroidRuntime(770):  at android.os.Looper.loop(Looper.java:123)
    04-09 17:40:02.894: E/AndroidRuntime(770):  at android.app.ActivityThread.main(ActivityThread.java:3683)
    04-09 17:40:02.894: E/AndroidRuntime(770):  at java.lang.reflect.Method.invokeNative(Native Method)
    04-09 17:40:02.894: E/AndroidRuntime(770):  at java.lang.reflect.Method.invoke(Method.java:507)
    04-09 17:40:02.894: E/AndroidRuntime(770):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
    04-09 17:40:02.894: E/AndroidRuntime(770):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
    04-09 17:40:02.894: E/AndroidRuntime(770):  at dalvik.system.NativeStart.main(Native Method)
    04-09 17:40:02.894: E/AndroidRuntime(770): Caused by: java.lang.IllegalArgumentException: The layout specified in contacts does not exist
    04-09 17:40:02.894: E/AndroidRuntime(770):  at com.satyamdswt.agreader.Adapters$XmlCursorAdapterParser.parse(Adapters.java:219)
    04-09 17:40:02.894: E/AndroidRuntime(770):  at com.satyamdswt.agreader.Adapters.createCursorAdapter(Adapters.java:168)
    04-09 17:40:02.894: E/AndroidRuntime(770):  at com.satyamdswt.agreader.Adapters.createAdapterFromXml(Adapters.java:151)
    04-09 17:40:02.894: E/AndroidRuntime(770):  at com.satyamdswt.agreader.Adapters.loadAdapter(Adapters.java:105)
    04-09 17:40:02.894: E/AndroidRuntime(770):  at com.satyamdswt.agreader.Adapters.loadAdapter(Adapters.java:92)
    04-09 17:40:02.894: E/AndroidRuntime(770):  at com.satyamdswt.agreader.ContactsListActivity.onCreate(ContactsListActivity.java:12)
    04-09 17:40:02.894: E/AndroidRuntime(770):  at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
    04-09 17:40:02.894: E/AndroidRuntime(770):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1611)
    04-09 17:40:02.894: E/AndroidRuntime(770):  ... 11 more

LogCatでは、次のことがわかります。

com.satyamdswt.agreader/com.satyamdswt.agreader.ContactsListActivity

なぜこれが2回起こったのか分かりません。

詳細については、Manifest.xmlをここに表示します: Manifest.xml

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.satyamdswt.agreader"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk android:minSdkVersion="10" />
    <uses-permission android:name="android.permission.INTERNET"/>
    <uses-permission android:name="android.permission.READ_CONTACTS"/>

    <application
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name" >
        <activity
            android:name=".ContactsListActivity"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>

        </activity>

         <activity android:name="PhotosListActivity"
                  android:label="@string/photos_list_activity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>

        <activity android:name=".AGRssReaderActivity">
             <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>

    </application>

</manifest>

エラーがどこにあるか教えてください。

ContactListActivity.java

public class ContactsListActivity extends ListActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.contacts_list);
        setListAdapter(Adapters.loadAdapter(this,R.xml.contacts ));
    }

}

編集済み contacts.xml

    <?xml version="1.0" encoding="utf-8"?>
<cursor-adapter  xmlns:android="com.satyamdswt.agreader"
     xmlns:app="http://schemas.android.com/apk/res/com.satyamdswt.agreader"
    android:layout_width="@layout/contact_item"
    app:selection="has_phone_number = 1 "
    app:uri="content://com.satyamdswt.contacts/contacts" >



     <bind
        app:from="display_name"
        app:to="@id/name" 
         app:as="string"/>

    <bind
        app:as="drawable"
        app:from="starred"
        app:to="@id/star" >
        <map
            app:fromValue="0"
            app:toValue="@android:drawable/star_big_off" />
        <map
            app:fromValue="1"
            app:toValue="@android:drawable/star_big_on" />
    </bind>
    <bind
        app:as="com.satyamdswt.agreader.ContactPhotoBinder"
        app:from="_id"
        app:to="@id/name" />

</cursor-adapter>
4

2 に答える 2

1

エラーを再現しました。問題はあなたのres/xml/contacts.xmlファイルにあります

この行を変更します。

xmlns:app="com.satyamdswt.agreader"

この行に:

xmlns:app="http://schemas.android.com/apk/res/com.satyamdswt.agreader"

これは、アプリの XML 名前空間の正しい形式です。http://schemas.android.com/apk/res/package_name

Upd:タグ内の他のパラメーターは変更しないでください<cursor-adapter>。正しいフォーム:

<cursor-adapter xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res/com.satyamdswt.agreader"
    app:uri="content://com.android.contacts/contacts"
    app:selection="has_phone_number=1"
    app:layout="@layout/contact_item">
于 2012-04-13T14:02:20.783 に答える
0

contacts_list.xml をレイアウト フォルダー http://developer.android.com/resources/samples/XmlAdapters/res/layout/contacts_list.htmlに配置します。

ここからファイルをダウンロードして、レイアウト フォルダーに配置します http://developer.android.com/resources/samples/XmlAdapters/res/layout/index.html

編集

エラーはこのファイルにあると思います http://developer.android.com/resources/samples/XmlAdapters/res/xml/contacts.html

レイアウト フォルダにレイアウト「contact_item」があるかどうかを確認してください

ここで見つけることができます - http://developer.android.com/resources/samples/XmlAdapters/res/layout/contact_item.html

于 2012-04-11T12:35:27.517 に答える