Ger*_*urs 12 c# java android xamarin.android xamarin
我是Xamarin的新手,我不知道如何在c#中执行以下操作.我想在单击Positive/Negative按钮时阻止alertdialog关闭.我需要先对输入进行一些验证.如果输入正确,则对话框可以关闭,否则我将显示带有说明的消息.基本上,我有以下代码:
private void CreateAddProjectDialog() {
//some code
var alert = new AlertDialog.Builder (this);
alert.SetTitle ("Create new project");
alert.SetView (layoutProperties);
alert.SetCancelable (false);
alert.SetPositiveButton("Create", HandlePositiveButtonClick);
alert.SetNegativeButton("Cancel", HandelNegativeButtonClick);
}
private void HandlePositiveButtonClick (object sender, EventArgs e) {
//Do some validation here and return false (prevent closing of dialog) if invalid, else close....
}
Run Code Online (Sandbox Code Playgroud)
现在,我在StackOverflow上重新发布以下文章:如何在单击按钮时阻止对话框关闭
我认为下面的代码(取自线程)有解决方案,但我不知道如何重写我的c#代码来实现Java:
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
builder.setMessage("Test for preventing dialog close");
builder.setPositiveButton("Test",
new DialogInterface.OnClickListener()
{
@Override
public void onClick(DialogInterface dialog, int which)
{
//Do nothing here because we override this button later to change the close behaviour.
//However, we still need this because on older versions of Android unless we
//pass a handler the button doesn't get instantiated
}
});
AlertDialog dialog = builder.create();
dialog.show();
//Overriding the handler immediately after show is probably a better approach than OnShowListener as described below
dialog.getButton(AlertDialog.BUTTON_POSITIVE).setOnClickListener(new View.OnClickListener()
{
@Override
public void onClick(View v)
{
Boolean wantToCloseDialog = false;
//Do stuff, possibly set wantToCloseDialog to true then...
if(wantToCloseDialog)
dismiss();
//else dialog stays open. Make sure you have an obvious way to close the dialog especially if you set cancellable to false.
}
});
Run Code Online (Sandbox Code Playgroud)
如何在c#中编写代码?特别是setPositiveButton区域中的覆盖部分......
Kru*_*lur 28
这需要在盒子外思考一下.您将不得不AlertDialog直接操纵对象:
// Build the dialog.
var builder = new AlertDialog.Builder(this);
builder.SetTitle("Click me!");
// Create empty event handlers, we will override them manually instead of letting the builder handling the clicks.
builder.SetPositiveButton("Yes", (EventHandler<DialogClickEventArgs>)null);
builder.SetNegativeButton("No", (EventHandler<DialogClickEventArgs>)null);
var dialog = builder.Create();
// Show the dialog. This is important to do before accessing the buttons.
dialog.Show();
// Get the buttons.
var yesBtn = dialog.GetButton((int)DialogButtonType.Positive);
var noBtn = dialog.GetButton((int)DialogButtonType.Negative);
// Assign our handlers.
yesBtn.Click += (sender, args) =>
{
// Don't dismiss dialog.
Console.WriteLine("I am here to stay!");
};
noBtn.Click += (sender, args) =>
{
// Dismiss dialog.
Console.WriteLine("I will dismiss now!");
dialog.Dismiss();
};
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
9525 次 |
| 最近记录: |