Это потому, что вы неправильно добавляете тег в виде XML для просмотра. Это неправильно:
<!-- Below line is in a wrong place and wrong tag. -->
<layout xmlns:algolia="http://schemas.android.com/apk/res-auto">
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
...
</LinearLayout>
должно быть:
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:algolia="http://schemas.android.com/apk/res-auto"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="match_parent">
...
</LinearLayout>
Это может быть полезно, если у вас один и тот же метод EventHandler для разных кнопок. Например, скажем, ваша разметка выглядит следующим образом:
<asp:Button ID="button1" runat="server" CommandArgument="MyVal1"
CommandName="ThisBtnClick" OnClick="MyBtnHandler" />
<asp:Button ID="button2" runat="server" CommandArgument="MyVal2"
CommandName="ThatBtnClick" OnClick="MyBtnHandler" />
Вы можете иметь один и тот же обработчик событий для обеих кнопок и различать их в зависимости от CommandName:
protected void MyBtnHandler(Object sender, EventArgs e)
{
Button btn = (Button)sender;
switch (btn.CommandName)
{
case "ThisBtnClick":
DoWhatever(btn.CommandArgument.ToString());
break;
case "ThatBtnClick":
DoSomethingElse(btn.CommandArgument.ToString());
break;
}
}
Различные элементы управления типа Button в .NET имеют событие OnCommand
, а также событие OnClick
. При использовании события OnCommand
у вас есть дополнительные параметры, которые вы можете применить к кнопке, такие как CommandName
и CommandArgument
. Затем к ним можно получить доступ в CommandEventArgs
.
Это полезно в тех местах, где вы хотите назначить один и тот же метод нескольким кнопкам и использовать CommandName
и CommandArgument
параметры, указывающие, какую функциональность будет вызывать нажатие этой кнопки.
Класс EventArgs
является базовым классом. Другие веб-методы используют другие аргументы Event.
Например, LinkButton имеет событие OnClick с параметром EventArgs по умолчанию, но также имеет событие OnCommand, которое принимает параметр CommandEventArgs: EventArgs
, который имеет некоторую дополнительную информацию ( а именно, CommandName & CommandArgument).
Базовый класс args для события просто присутствует в качестве заполнителя, поэтому все EventHandlers соответствуют одинаковой подписи.