簡體   English   中英

在 Xamarin.Android 中的布局之間移動

[英]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加載LayoutOneSecondActivity加載LayoutTwoThirdActivity加載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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM