4

例から始めましょう... Settings > Applications > Manage applicationsに移動すると、新しい画面が開き、インストールされているアプリケーションのリストが表示されます。リストのアプリケーションをクリックすると、新しい画面が開きます。アプリケーションに関する情報。

さて、私のアプリケーションのいくつかの設定はリストを介して管理する必要があり、このリストは上記の例のように動作するはずです。すでにPreferenceActivityいくつかのカテゴリを作成しており、それぞれにいくつかのアイテムがあります。これらのアイテムのいずれかをクリックすると、新しいデータがリストに配置される新しい画面が開きます。上記の例のアプリケーション。さらに、このリストのエントリをクリックすると、データを設定するために新しい画面が開きます。

どのように進めればよいですか?画面ごとにアクティビティを作成する必要がありますか?

4

5 に答える 5

4

Androidは、「アクティビティはユーザーが実行できる単一の焦点を絞ったものです。」というドキュメントによると、この方法で作成されたため、画面ごとにアクティビティを用意する必要があります。これは、フラグメントの導入によりHoneycombで少し変更されましたが、タブレット向けに開発していない場合は、Androidで1ページ、1アクティビティの考え方を維持する必要があります。

于 2012-04-25T18:03:10.707 に答える
3

通常、各アクティビティは別のアクティビティによって呼び出され、呼び出し元はスタックにプッシュされ(呼び出し元のアクティビティが削除を要求しない限り)、戻るまで休止状態になります。

基本的に、アクティビティAでインテントを作成してアクティビティBを開始します。インテントにエクストラを追加して、startActivityForResultを使用してデータを渡すことができます。例:アクティビティ間でデータを渡す方法

戻るボタンを押すと、その前のアクティビティが再びアクティブになり、設定した結果ハンドラーが任意の戻りデータを取得できます。

見た目も動作も優れたタブレットサポートを提供したい場合は、サポートAPIのフラグメントを確認することもできます。

于 2012-04-25T18:03:22.203 に答える
2

私はこれを仕事で実装することができました、私がそれをどのように実装したかを頭の中で今覚えていません、ずっと前でした。誰もあなたに良い答えを持っていない場合は、明日投稿します。ボタンとして機能するPreferenceを配置したことを覚えています。次に、クリック時に新しいPreferenceScreenを開くためにpreferenceClickListenerを追加しました。しかし、私が言ったように、あなたが満足のいく答えを得られないならば、私はあなたのためにそれを明日投稿します。

幸運を!

アップデート:

?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
<PreferenceCategory
    android:title="Personal"
    android:key="personal_category">
    <Preference
        android:key="birth"
        android:title="Birth"
        android:summary="Choose your birthday"/> 
    <PreferenceScreen 
        android:key="height_imp"
        android:title="Height"
        android:summary="Enter your height">
        <EditTextPreference
            android:key="foot"
            android:title="Foot" 
            android:summary="foot"
            android:numeric="integer"
            android:dialogTitle="Foot"/>
        <EditTextPreference
            android:key="inch"
            android:title="Inch" 
            android:summary="inch"
            android:numeric="integer"
            android:dialogTitle="Inch"/>
    </PreferenceScreen>
    <EditTextPreference
        android:key="weight"
        android:title="Weight" 
        android:summary="Enter your weight"
        android:numeric="integer"
        android:dialogTitle="Weight"/>    
</PreferenceCategory>
</PreferenceScreen>

それでおしまい!それをクリックすると、2番目のPreferenceScreenなどに移動します。最後に、レイアウトをカスタマイズする必要がある場合は、アクティビティを開く必要があります。次に、設定を使用してonPreferenceClickを追加できます。

@Override
public boolean onPreferenceClick(Preference preference) {
    if(preference == birth){
        startActivity(new Intent(getBaseContext(), Birth.class));
    }
    if(preference == height_imp){
        PreferenceScreen a = (PreferenceScreen) preference;
        a.getDialog().getWindow().setBackgroundDrawable(new ColorDrawable(Color.WHITE));
        return false;
    }
    return true;
}

PreferencesScreenを使用して背景などを変更する必要がある場合は、preferenceClickListenerも追加します。height_imp = (PreferenceScreen)getPreferenceScreen().findPreference("height_imp"); height_imp.setOnPreferenceClickListener(this);

于 2012-04-25T18:02:44.857 に答える
2

少なくとも、ウィザード スタイルのアクティビティに取り組んでいない場合は、おそらくこれが最善の方法です。

ListActivityを使用してリストを表示し、インテントを使用してこのアクティビティとの間でデータを渡します。

于 2012-04-25T17:59:58.453 に答える
1

参照してください...ユーザーが特定のポイントから前の位置に戻りたい場合...それぞれに個別のアクティビティを作成した場合...現在のアクティビティはスタックからポップされます...前のアクティビティを許可します表示される...新しいアクティビティを作成するのではなく、新しい画面ごとにリストの内容を変更すると、ユーザーが戻ってくるのが難しくなります...何度も変更する必要がありますアダプターの内容..だから私は思う..各画面に個別のアクティビティを作成する方が良い..(そして、すべてのアクティビティに同じ[任意のカスタムレイアウト]レイアウトファイルを使用できます..)

于 2012-04-25T17:57:48.633 に答える