c# - Android - 从另一个 Fragment C# 启动 Fragment
问题描述
我知道这个问题在这里被问得太多,但我已经尝试了所有解决方案来打开另一个片段中的片段,但没有人为我工作。
片段1.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();
};
}
我的布局
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/content_frame">
<TextView
android:text="Text"
android:layout_width="match_parent"
android:layout_height="70dp"
android:id="@+id/total"
android:textAlignment="center"
android:textSize="30dp" />
<TextView
android:text="Text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/textchangevalue"
android:textSize="33dip"
android:textStyle="bold" />
<Button
android:text="UPDATE"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/updatebtn" />
<Button
android:text="ADD"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/addbtn" />
<ListView
android:minWidth="25px"
android:minHeight="25px"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/portfoliolist"
android:clickable="true" />
片段2.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<TextView>(Resource.Id.textView1);
Button btn = view.FindViewById<Button>(Resource.Id.button1);
listView = view.FindViewById<ListView>(Resource.Id.listView1);
Toast.MakeText(Activity, "Fragment2 started", ToastLength.Short).Show();
return view;
}
当我运行该应用程序并单击该add
按钮时,什么也没有发生。这是为什么 ?我试图Fragment1
通过 put 而不是<LinearLayout>
a来改变布局,<FrameLayout>
但也没有奏效。请帮我找到解决方案。
编辑:
我在 中添加了一条toast
消息,Fragment2
当我单击 中的add
按钮时fragment1
,toast
消息(位于 中fragment2
)正在显示,这意味着fragment2
开始正常,但其布局未显示在屏幕上。
解决方案
您必须在之前Click
将您的事件附加到您的按钮,并且我认为您想将此事件附加到您的按钮上,因此您必须在附加此事件之前创建变量 return
view
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<Button>(Resource.Id.addbtn);
add.Click += delegate
{
Fragment2 fragment2 = new Fragment2();
FragmentTransaction ft = FragmentManager.BeginTransaction();
ft.Replace(Resource.Id.content_frame, fragment2);
ft.Commit();
};
return view;
}
推荐阅读
- python - 如何将自定义类及其变量/方法添加到 Visual Studio Intellisense?
- javascript - 如何在php中获取参数
- google-apps-script - 如何将数据复制到新的电子表格然后另存为 PDF?
- c# - 如何在 Windows Server 2012 R2 上运行 Microsoft.CognitiveServices.Speech
- c# - 无法加载程序集 UnityEngine.UI 的文件,编辑器 UI 在运行时也有问题
- javascript - 不等于!= Google App 脚本不起作用
- maven - 当我使用 selenium 使用 maven 运行 testng 时出现错误
- visual-studio-code - 如何在 Visual Studio Code 中禁用“假”右括号注释?
- c++ - 如何结束 COM 自动化期间执行的进程
- javascript - 手动设置边缘的路由点 (mxGraph)