[英]Move between layouts in Xamarin.Android
我正在 Xamarin Android 中開發應用程序。 我想使用一個按鈕,然后移動到下一個布局(我有 3 個布局)。 我可以從布局 1 移動到布局 2,但不能從布局 2 移動到布局 3。
布局一
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:background="#1f1e1e"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_gravity="center"
android:orientation="vertical">
<Button
android:text="One"
android:clickable="true"
android:id="@+id/btnOne"
android:textSize="16sp"
android:layout_width="wrap_content"
android:backgroundTint="#484848"
android:layout_marginTop="3dp"
android:layout_gravity="center_horizontal"
android:layout_height="wrap_content"/>
</LinearLayout>
///////////////////////////////////
protected override void OnCreate(Bundle savedInstanceState)
{
base.OnCreate(savedInstanceState);
Xamarin.Essentials.Platform.Init(this, savedInstanceState);
SetContentView(Resource.Layout.LayoutOne);
Button btnOne = FindViewById<Button>(Resource.Id.btnOne);
btnOne.Click += btnOne_Click;
}
private void btnOne_Click(object Sender, EventArgs e)
{
SetContentView(Resource.Layout.LayoutTwo);
}
布局二
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:background="#1f1e1e"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_gravity="center"
android:orientation="vertical">
<Button
android:text="Two"
android:clickable="true"
android:id="@+id/btnTwo"
android:textSize="16sp"
android:layout_width="wrap_content"
android:backgroundTint="#484848"
android:layout_marginTop="3dp"
android:layout_gravity="center_horizontal"
android:layout_height="wrap_content"/>
</LinearLayout>
///////////////////////////////////
protected override void OnCreate(Bundle savedInstanceState)
{
base.OnCreate(savedInstanceState);
Xamarin.Essentials.Platform.Init(this, savedInstanceState);
SetContentView(Resource.Layout.LayoutTwo);
Button btnTwo = FindViewById<Button>(Resource.Id.btnTwo);
btnTwo.Click += btnTwo_Click;
}
private void btnTwo_Click(object Sender, EventArgs e)
{
SetContentView(Resource.Layout.LayoutThree);
}
布局三
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:background="#1f1e1e"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_gravity="center"
android:orientation="vertical">
<TextView
android:textSize="16sp"
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:text="This is Layout3"
android:layout_gravity="center_horizontal"
android:textColor="@android:color/white"/>
</LinearLayout>
沒有錯誤,應用程序運行。 我使用 USB 調試通過我的手機運行它。
如果要在三個不同的布局之間導航,一個常用的方法是創建三個不同的活動並為它們設置三個布局。 例如, FirstActivity
加載LayoutOne
, SecondActivity
加載LayoutTwo
和ThirdActivity
加載LayoutThree
,之后我們可以使用Intent
在它們之間導航。
請參考以下代碼:
第一活動.cs
public class FirstActivity : AppCompatActivity
{
protected override void OnCreate(Bundle savedInstanceState)
{
base.OnCreate(savedInstanceState);
Xamarin.Essentials.Platform.Init(this, savedInstanceState);
// Set our view from the "main" layout resource
SetContentView(Resource.Layout.LayoutOne);
Button btnOne = FindViewById<Button>(Resource.Id.btnOne);
btnOne.Click += BtnOne_Click;
}
private void BtnOne_Click(object sender, System.EventArgs e)
{
// SetContentView(Resource.Layout.LayoutTwo);
Intent intent = new Intent(this,typeof(SecondActivity));
StartActivity(intent);
}
}
第二個活動.cs
public class SecondActivity : Activity
{
protected override void OnCreate(Bundle savedInstanceState)
{
base.OnCreate(savedInstanceState);
SetContentView(Resource.Layout.LayoutTwo);
Button btnTwo = FindViewById<Button>(Resource.Id.btnTwo);
btnTwo.Click += btnTwo_Click;
}
private void btnTwo_Click(object sender, EventArgs e)
{
//SetContentView(Resource.Layout.LayoutThree);
Intent intent = new Intent(this,typeof(ThirdActivity));
StartActivity(intent);
}
}
第三活動.cs
public class ThirdActivity : Activity
{
protected override void OnCreate(Bundle savedInstanceState)
{
base.OnCreate(savedInstanceState);
// Create your application here
SetContentView(Resource.Layout.LayoutThree);
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.