6

私はProAndroid4の「クリック可能なリストアイテム」コードで遊んでいます。コードは基本的に次のとおりです。

public class MainActivity extends ListActivity implements OnItemClickListener
{
    @Override
    public void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);

        CursorLoader loader = new CursorLoader(this, Contacts.CONTENT_URI, null,
            null, null, Contacts.DISPLAY_NAME + " ASC");
        Cursor cursor = loader.loadInBackground();

        String[] columns = new String[] { Contacts.DISPLAY_NAME };
        int[] views = new int[] { android.R.id.text1 };

        SimpleCursorAdapter adapter = new SimpleCursorAdapter(this, 
            android.R.layout.simple_list_item_1, cursor, columns, views, 
                CursorAdapter.FLAG_REGISTER_CONTENT_OBSERVER);
        setListAdapter(adapter);

        getListView().setOnItemClickListener(this);
    }

    @Override
    public void onItemClick(AdapterView<?> adapterView, View view, int position, long id)
    {
        Uri contactUri = ContentUris.withAppendedId(Contacts.CONTENT_URI, id);
        Intent intent = new Intent(Intent.ACTION_VIEW, contactUri);
        startActivity(intent);
    }
}

これはすべて正常に機能します。連絡先のリストが表示され、名前をタップすると、その人のアドレス帳が開きます。

問題は、アドレス帳の[戻る]ボタンが機能しないことです。本によると、名簿から戻るボタンをタップすると、上記のアクティビティに戻るはずです。しかし、代わりにホーム画面に戻ります。

アプリはまだ実行中です。手動で切り替えると、アプリに戻り、リストビューが適切な前のスクロール位置になります。

これはAndroid4.1.1にあります。これを機能させるために実装する必要がある何か余分なものがあるかどうか疑問に思っていますか?

これはマニフェストファイルです:

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.contactslist"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk
        android:minSdkVersion="16"
        android:targetSdkVersion="15" />

    <uses-permission android:name="android.permission.READ_CONTACTS"/>

    <application
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <activity
            android:name=".MainActivity"
            android:label="@string/title_activity_main" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

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

</manifest>
4

1 に答える 1

0

アクティビティスタックがどういうわけか台無しになっているようです。startActivity(intent)の呼び出しを開始する前に、以下を追加してみてください

intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
于 2012-08-07T20:22:55.743 に答える