2

ドロイドアプリケーションのモノラルでモーダルポップアップを作成する方法(可能であれば)について疑問に思っています。

シナリオ: アプリケーションは顧客がホストする Web サーバーと通信します (したがって、この場所は顧客ごとに異なります)。アプリを使用するには、ユーザーは Web サーバーの接続文字列を指定する必要があります。そのため、アプリケーションが起動してメイン アクティビティに到達すると、最初に行う作業は、デバイスのアプリケーション設定に接続文字列が設定されているかどうかを確認することです。そうでない場合は、ユーザーがサーバーへの接続を指定できるようにする単純なモーダル ポップアップを表示したいと考えています。

ユーザーが戻るボタンをクリックしてメインメニューに戻るだけで、どのサーバーと通信するかわからないため、アプリが無効な状態になるため、通常のアクティビティを開始したくありません。

これについてどうやって行くかについてのアイデアはありますか?

または、最初のアクティビティで接続文字列が入力されるようにアクティビティ チェーンを構築して、クリックして戻ったときに実際にアプリから外れるようにする必要がありますか?

私は少し混乱しています。

前もって感謝します

4

2 に答える 2

3

で可能AlertDialogです。リスト、チェックボックス、はい/いいえボタン、およびカスタム ビューを使用して、簡単な入力用のダイアログを作成できます。

Xamarin サンプル リポジトリには、さまざまな種類のダイアログのサンプルがあり、下部には、ユーザー名とパスワードのフィールドを含むカスタム ビューが追加されたサンプルがあります。

したがって、最初に に配置するカスタム ビューを定義しますAlertDialogalert_dialog_connection_entry.xmlであり、Layout:

アクティビティのどこかにコードを追加します。

var connection_string_view = LayoutInflater.Inflate(Resource.Layout.alert_dialog_connection_entry, null);

var builder = new AlertDialog.Builder(this);
builder.SetTitle("Connection String");
builder.SetView(connection_string_view);
builder.SetPositiveButton("OK", OkClicked);
builder.SetNegativeButton("Cancel", CancelClicked);
builder.Create();
builder.Show();

ボタンのハンドラーをいくつか追加します。

private void CancelClicked(object sender, DialogClickEventArgs dialogClickEventArgs)
{
    //Todo
}

private void OkClicked(object sender, DialogClickEventArgs dialogClickEventArgs)
{
    var dialog = sender as AlertDialog;

    if (null != dialog)
    {
        var connectionEdit = dialog.FindViewById(Resource.Id.connectionstring_edit) as EditText;


        if (null != connectionEdit)
            Console.WriteLine("Connection String: {0}", connectionEdit.Text);
    }
}

それだけです。ダイアログには、あらゆる種類のカスタム ビューを配置できるはずです。

于 2013-01-18T00:21:52.513 に答える
0

ユーザーが接続文字列を入力できるようにするためのモーダル ポップアップを表示するだけの場合は、これを試すことができます。

まず、ダイアログの表示方法について単純なレイアウトが必要です。この場合、TextView「接続文字列:」のような表示とEditText、ユーザーが接続文字列を入力できるようにするだけで十分でしょう。

MainActivity次に、アプリケーションの設定などを確認した後など、このコードを のどこかに配置できます。

        var builder = new AlertDialog.Builder(this);
        var view = LayoutInflater.Inflate(Resource.Layout.ModalDialog, null);
        builder.SetView(view);
        string connectionString = view.FindViewById<EditText>(Resource.Id.ConnectionString).Text;
        AlertDialog alert = builder.Create();
        alert.SetCancelable(false);    //This prevents the dialog from being dismissed by either hit back button or hit out side of the dialog
        alert.SetButton("OK", (s,e)=> ToDo(connectionString));    //Now you have the connection string, to do whatever you want.
        alert.Show();

あなたが言ったように、代替手段は、ユーザーが最初の画面で接続文字列を指定できるようにすることです。これも良いアプローチです。あなたはその方法を知っていると思いますので、ここにコードを投稿しませんでした。

于 2013-01-18T00:16:09.450 に答える