Android ActionBar:如何从MainActivity访问Fragment的方法?
我想访问为操作栏创建的片段的方法或全局变量,但不幸的是,我找不到它的任何ID,也无法访问它。有人知道怎么做吗 trainingFragment.somemethodeaParameter不工作 注意:关于我没有接触清单文件的信息,我不知道我是否应该接触清单文件。我没有使用Android.Support.V4.App或Android.Support.V7.AppCompat,我只是使用Android.App。目标框架是Android 4.4 Kit Kat 代码如下: 主要活动:Android ActionBar:如何从MainActivity访问Fragment的方法?,android,android-fragments,xamarin,android-actionbar,Android,Android Fragments,Xamarin,Android Actionbar,我想访问为操作栏创建的片段的方法或全局变量,但不幸的是,我找不到它的任何ID,也无法访问它。有人知道怎么做吗 trainingFragment.somemethodeaParameter不工作 注意:关于我没有接触清单文件的信息,我不知道我是否应该接触清单文件。我没有使用Android.Support.V4.App或Android.Support.V7.AppCompat,我只是使用Android.App。目标框架是Android 4.4 Kit Kat 代码如下: 主要活动: public c
public class MainActivity : Activity
{
static readonly string Tag = "ActionBarTabsSupport";
Fragment[] _fragments;
// Layout Views
public TextView title;
protected override void OnCreate(Bundle bundle)
{
base.OnCreate(bundle);
SetContentView(Resource.Layout.mainactivity);
ActionBar.NavigationMode = ActionBarNavigationMode.Tabs;
SetContentView(Resource.Layout.mainactivity);
Fragment trainingFragment = new TrainingFragment ();
Fragment bluetoothChatFragment = new TestFragment();
_fragments = new Fragment[]
{
trainingFragment,
bluetoothChatFragment
};
AddTabToActionBar(Resource.String.training_label, Resource.Drawable.ic_action_speakers);
AddTabToActionBar(Resource.String.btchat_label, Resource.Drawable.ic_action_sessions);}
void AddTabToActionBar(int labelResourceId, int iconResourceId)
{
ActionBar.Tab tab = ActionBar.NewTab()
.SetText(labelResourceId)
.SetIcon(iconResourceId);
tab.TabSelected += TabOnTabSelected;
ActionBar.AddTab(tab);
}
void TabOnTabSelected(object sender, ActionBar.TabEventArgs tabEventArgs)
{
ActionBar.Tab tab = (ActionBar.Tab)sender;
Log.Debug(Tag, "The tab {0} has been selected.", tab.Text);
Fragment frag = _fragments[tab.Position];
tabEventArgs.FragmentTransaction.Replace(Resource.Id.frameLayout1, frag);
}
其中一个片段:
public class TrainingFragment : Fragment
{
public override View OnCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
{
View view = inflater.Inflate(Resource.Layout.training_layout, null);
return view;
}
public void somemethod(int aParameter)
{
//Do something
}
}
提前谢谢试试看
void TabOnTabSelected(object sender, ActionBar.TabEventArgs tabEventArgs)
{
ActionBar.Tab tab = (ActionBar.Tab)sender;
Log.Debug(Tag, "The tab {0} has been selected.", tab.Text);
Fragment frag = _fragments[tab.Position];
if(frag instanceof TrainingFragment ){
((TrainingFragment)frag).somemethod(0);
}
tabEventArgs.FragmentTransaction.Replace(Resource.Id.frameLayout1, frag);
}