#c# #xamarin.forms
#c# #xamarin.forms
Вопрос:
У меня есть приложение Xamarin Forms (на самом деле привязки к мобильному блейзеру). Для каждой платформы есть проекты, и один проект является общим. MyApp (общий проект), MyApp.Android и т.д. Я могу получить доступ к общему проекту из любого другого проекта, но не наоборот.
Итак, я следовал руководству и для данной кнопки в XML в общем проекте
<Button
android:id="@ id/subscribeButton"
android:layout_width="match_parent"
android:text="Subscribe to Notifications" />
в Android project есть код ответа (если быть точным, в MainActivity.cs):
var subscribeButton = FindViewById<Button>(Resource.Id.subscribeButton);
subscribeButton.Click = delegate {
FirebaseMessaging.Instance.SubscribeToTopic("news");
Log.Debug(TAG, "Subscribed to remote notifications");
};
Итак, здесь findViewById находит кнопку в общем клиентском проекте, и когда эта кнопка нажата, она просто запускает то, что внутри.
Моя проблема в том, что в моем проекте вместо XML есть файлы razor.
На самом деле я пытаюсь выполнить следующее:
- В файле razor в общем проекте
@code {
User loggedUser;
protected override async Task OnInitializedAsync(){
loggedUser = await.getUser();
if(loggedUser != null)
subscribeUser(loggedUser.groupName); //user.groupName is a string
}
- и в Android Project
protected override void OnCreate(Bundle savedInstanceState)
{
//some code
if( subsribeUser(string groupname) invoked ) {
FirebaseMessaging.Instance.SubscribeToTopic(groupname);
}
}
Таким образом, вместо нажатия кнопки или любого другого взаимодействия с пользователем клиент должен подписаться на loggedUser
loggedUser.groupName
раздел.
-
Как мне прослушивать, вызывается ли метод, и выполнять некоторые другие действия, когда это происходит?
-
Можно ли получить доступ к параметрам, с которыми вызывается этот метод?
-
Обрабатывается ли это с помощью обработчиков событий?
Я запутался, потому что это не похоже на вызов метода из другого класса, к которому у вас есть доступ.
Комментарии:
1. Я недостаточно знаю о Razor, чтобы дать ответ, но я бы предложил разбить ваш вопрос на более мелкие шаги. Во-первых: вы можете найти кнопку? Попробуйте отладить проект, если в строке ошибка
subscribeButton.Click = ...
, значит, ваш код не смог найти кнопку.2. Я ошибаюсь, когда объясняю это. Я хочу добиться этого, не привязывая его к кнопке. Это должно происходить автоматически при входе пользователя в систему. В руководстве это происходит при нажатии кнопки, но мне было интересно, смогу ли я добиться того же без взаимодействия с пользователем. Я соответствующим образом отредактирую свой вопрос.
3. «Я могу получить доступ к общему проекту из любого другого проекта, но не наоборот». — вот как работают ссылки. Если A ссылается на B, A может получить доступ к общедоступным элементам B, но B не может получить доступ к элементам A.