Страницы

Поиск по вопросам

четверг, 9 января 2020 г.

Как определить на какую кнопку нажал пользователь

#android #c_sharp #button #xamarin #click


Итак, есть 5 кнопок на экране, нужно определить на какую кнопку нажал пользователь
и взять её тег после чего редирект на другое активити. Пытался сделать это так:

protected override void OnCreate(Bundle savedInstanceState)
{
    base.OnCreate(savedInstanceState);

    SetTheme(Android.Resource.Style.ThemeDeviceDefaultLightNoActionBar);
    SetContentView(Resource.Layout.MainScreen);

    Button BtnHm = (Button)FindViewById(Resource.Id.Home);
    BtnHm.Click += SwitchActivity;

    Button BtnSrch = (Button)FindViewById(Resource.Id.Search);
    BtnSrch.Click += SwitchActivity;

    Button BtnLstOfPh = (Button)FindViewById(Resource.Id.ListOfPhotos);
    BtnLstOfPh.Click += SwitchActivity;

    Button BtnGlr = (Button)FindViewById(Resource.Id.Glory);
    BtnGlr.Click += SwitchActivity;

    Button BtnMyAcc = (Button)FindViewById(Resource.Id.MyAcc);
    BtnMyAcc.Click += SwitchActivity;
}

public void SwitchActivity(object sender, EventArgs e)
{
    Button sendBtn = (Button)sender;

    switch (sendBtn.Tag)
    {
        case 1:
            Intent toMain = new Intent(this, typeof(MainScreenActivity));
            StartActivity(toMain);
            break;
        case 2:
            Intent toSearch = new Intent(this, typeof(SearchActivity));
            StartActivity(toSearch);
            break;
        case 3:
            Intent toPhoto = new Intent(this, typeof(ListOfPhotoActivity));
            StartActivity(toPhoto);
            break;
        case 4:
            Intent toGlory = new Intent(this, typeof(GloryActivity));
            StartActivity(toGlory);
            break;
        case 5:
            Intent toUser = new Intent(this, typeof(UserActivity));
            StartActivity(toUser);
            break;
    }
}


Но мне подчеркивает в case цифры и пишет что требуется постоянное значение. Как исправить?


    


Ответы

Ответ 1



Чтобы вы ни писали в xml, в свойство Tag любое значение будет паковаться (Tag - всё же object). При запросе свойства вы будете всегда получать object, поэтому нужно провести распаковку: switch ((int) sendBtn.Tag)

Ответ 2



Тебе нужно присвоить каждой кнопке Id и в конструкции switch() искать view-элемент по id пример: switch(sendBtn.getId()){ case R.id.btn1: ... case R.id.btn2: ...} Если это не подходит для Вашего языка программирования, я надеюсь, что мой ответ подскажет вам путь решения данной проблемы. Всего хорошего)

Ответ 3



XAML `

Комментариев нет:

Отправить комментарий