У меня проблема. У меня есть метод в классе, как это:
public void UpdateActionBar(int CurrentFragmentNum)
{
if (CurrentFragmentNum == 1)
{
btnBack.Visibility = ViewStates.Invisible;
btnNext.Visibility = ViewStates.Invisible;
}
else
{
btnBack.Visibility = ViewStates.Visible;
btnNext.Visibility = ViewStates.Visible;
}
if (CurrentFragmentNum == 3)
{
btnNext.Text = "Finish";
}
else
{
btnNext.Text = "Next";
}
}
Теперь в другом классе я вызываю этот метод так:
new ActionBar_Setup().UpdateActionBar(CurrentFragmentNum);
Но, как вы видите, я использую 2 переменные: btnBack
и btnNext
Эти переменные равны нулю, когда я вызываю метод из другого класса, потому что тогда переменные не определены. Но я не могу переместить строки, которые присваивают значение этим переменным, потому что он использует переменную представления. Вот код, чтобы показать, что я имею в виду:
public class ActionBar_Setup : Android.Support.V4.App.Fragment
{
Button btnBack;
Button btnNext;
public int CurrentFragmentNum = 1;
public int PreviousFragmentNum = 1;
public string Direction;
public override void OnCreate(Bundle savedInstanceState)
{
base.OnCreate(savedInstanceState);
}
public override View OnCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
{
View view = inflater.Inflate(Resource.Layout.setup_nav_bar, container, false);
btnBack = view.FindViewById<Button>(Resource.Id.btnBack);
btnNext = view.FindViewById<Button>(Resource.Id.btnNext);
btnBack.Click += btnBack_Click;
btnNext.Click += btnNext_Click;
UpdateActionBar(CurrentFragmentNum);
return view;
}
public void btnBack_Click(object sender, EventArgs e)
{
if (CurrentFragmentNum > 1)
{
PreviousFragmentNum = CurrentFragmentNum;
CurrentFragmentNum -= 1;
Direction = "Backwards";
UpdateActionBar(CurrentFragmentNum);
(Activity as MainActivity)?.ShowFragment(CurrentFragmentNum, PreviousFragmentNum, Direction);
}
}
public void btnNext_Click(object sender, EventArgs e)
{
if (CurrentFragmentNum < 3)
{
PreviousFragmentNum = CurrentFragmentNum;
CurrentFragmentNum += 1;
Direction = "Forwards";
UpdateActionBar(CurrentFragmentNum);
(Activity as MainActivity)?.ShowFragment(CurrentFragmentNum, PreviousFragmentNum, Direction);
}
}
public void UpdateActionBar(int CurrentFragmentNum)
{
if (CurrentFragmentNum == 1)
{
btnBack.Visibility = ViewStates.Invisible;
btnNext.Visibility = ViewStates.Invisible;
}
else
{
btnBack.Visibility = ViewStates.Visible;
btnNext.Visibility = ViewStates.Visible;
}
if (CurrentFragmentNum == 3)
{
btnNext.Text = "Finish";
}
else
{
btnNext.Text = "Next";
}
}
}
Как я могу это исправить, чтобы я мог вызывать функцию в другом классе?