0

私は Android 開発の初心者であり、自分のスキルを向上させる目的で、連絡先管理アプリケーションを作成するタスクを自分自身に設定しました。

ユーザーは、連絡先の検索、新しい連絡先の編集、連絡先の編集、連絡先の削除など、通常の連絡先編集オプションをすべて利用できます。パブリック変数の ID)。連絡先が「選択」されているときに「編集」または「削除」を押すと、これらの機能は正常に機能します。

しかし、連絡先が選択されていないときにユーザーが「編集」または「削除」を押そうとするとどうなるでしょうか? 簡単な解決策は、「連絡先を選択してください」というメッセージを表示することですが、それは悪い設計です。アプリでユーザー入力が必要な場合は、連絡先を選択するために必要なアクティビティにリダイレクトする必要があります。

したがって、ユーザーが [編集] ボタンをクリックすると、次の非常に小さなコード スニペットが作成されます。

public void findContact(View view)
{
    Intent intent = new Intent(this, FindContactActivity.class);
    startActivityForResult(intent, 1);      
}

public void editContact(View view)
{
    if (Db.contact == null)
        findContact(null);
    else {
        // navigate to edit activity
    }
}

この場合、'contact' は type のオブジェクトでcontact、連絡先に関連する情報を独自のクラスに格納します。Dbは、データベース アクセス関数を含むクラスです。どこからでもアクセスできるようにする必要があるパブリック変数を格納するのに適しているように思えました。

上記のコードは明らかに正常に動作します。連絡先が選択されている場合は、編集画面に移動します。そうでない場合は、連絡先検索画面に移動します。しかし問題は、ユーザーが連絡先を選択した後に何が起こるかということです。編集画面に戻ることはありません。

私の理想的なフローは、疑似コードで次のようになります。

editContact()
{
    if (contact is selected)
        editContact();
    else
    {
        findContact();
        // once found, go to edit contact screen
        editContact();
    }
}

私はアンドロイド開発にまったく慣れていないことを念頭に置いて、上記のように、アプリケーションの「フロー」を作成する上で誰かが私にいくつかの指針を与えることができるかどうか疑問に思っていました.

4

2 に答える 2

1

私があなたの問題を理解していれば、それを行ういくつかの方法があるかもしれません. Button連絡先がまだ選択されていない場合は、おそらく「編集」を無効にするだけです。ただし、これがうまくいかない場合は、 でフラグを渡すことができますIntent。私がときどき行うことの 1 つは、「ソース」フラグを渡すことです。

編集をクリックした後、連絡先が選択されていません

Intent i = new Intent(Edit.this, FindContact.class);
i.putExtra("source", "edit");
startActivity(i);

次に、検索連絡先で余分なものを取得します

Intent intent = getIntent();
if ("edit".equals(intent.getStringExtra("source");
{
     // create intent for EditScreen

booleanこの方法でキー「edit」を使用して値を渡すだけで、それが真かどうかを確認することもできます。もしそうなら、EditScreenあなたが必要とするところに行きません。これが役立つことを願っています。私が誤解している場合はお知らせください。

また、さまざまなIntent.FLAGSが非常に貴重であることがわかります。

于 2013-06-28T14:42:22.837 に答える