Android – 从另一个片段C开始Fragemnt#

我知道这个问题在这里被问得太多但是我已经尝试过每个解决方案从另一个片段打开一个片段,没有人为我工作。

Fragment1.cs

public override View OnCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { base.OnCreate(savedInstanceState); View view = inflater.Inflate(Resource.Layout.my_layout, container, false); return view; add.Click += delegate { Fragment2 fragment2 = new Fragment2(); FragmentTransaction ft = FragmentManager.BeginTransaction(); ft.Replace(Resource.Id.content_frame, fragment2); ft.Commit(); }; } 

my_layout

      

Fragment2.cs

 public override View OnCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { base.OnCreate(savedInstanceState); View view = inflater.Inflate(Resource.Layout.fragment_lay, container, false); TextView txt = view.FindViewById(Resource.Id.textView1); Button btn = view.FindViewById

当我运行应用程序,然后单击add按钮时,没有任何事情发生。 这是为什么 ? 我试图改变Fragment1的布局,而不是一个但也没有工作。 请帮我找一个解决方案。

编辑:我在Fragment2放了一个toast消息,当我点击Fragment2add按钮时, toast消息(在fragment2 )显示这意味着fragment2正在启动,但是它的布局没有显示在屏幕。

你需要一个FrameLayout来包含你的LinearLayout

           

你的代码应该是:

  public override View OnCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { // Use this to return your custom view for this Fragment var view = inflater.Inflate(Resource.Layout.my_layout, container, false); var ll = view.FindViewById(Resource.Id.ll); var bt = view.FindViewById(Resource.Id.addbtn); bt.Click+= delegate { Fragment2 fragment2 = new Fragment2(); FragmentTransaction ft = FragmentManager.BeginTransaction(); ft.Replace(Resource.Id.content_frame, fragment2); ft.Commit(); ll.Visibility = ViewStates.Gone; }; return view; } 

你可以参考这个来看看你的fragment2就在它上面的原因。 我用ll.Visibility = ViewStates.Gone; 避免它。

return view 之前,您必须将Click事件附加到按钮,我认为您要在addbtn上附加此事件,因此您必须先创建变量add才能附加此事件

 public override View OnCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { base.OnCreate(savedInstanceState); View view = inflater.Inflate(Resource.Layout.my_layout, container, false); Button add = view.FindViewById 

您可以改为使用事件:

 public override View OnCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { base.OnCreate(savedInstanceState); View view = inflater.Inflate(Resource.Layout.my_layout, container, false); Button add = view.FindViewById 
Interesting Posts