Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/216.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android ActionBar:如何从MainActivity访问Fragment的方法?_Android_Android Fragments_Xamarin_Android Actionbar - Fatal编程技术网

Android ActionBar:如何从MainActivity访问Fragment的方法?

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

我想访问为操作栏创建的片段的方法或全局变量,但不幸的是,我找不到它的任何ID,也无法访问它。有人知道怎么做吗

trainingFragment.somemethodeaParameter不工作

注意:关于我没有接触清单文件的信息,我不知道我是否应该接触清单文件。我没有使用Android.Support.V4.App或Android.Support.V7.AppCompat,我只是使用Android.App。目标框架是Android 4.4 Kit Kat

代码如下:

主要活动:

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); 

}