Android 第二个活动在屏幕改变方向后关闭。[单安卓]

Android 第二个活动在屏幕改变方向后关闭。[单安卓],android,android-activity,xamarin.android,screen-orientation,android-orientation,Android,Android Activity,Xamarin.android,Screen Orientation,Android Orientation,你好,堆栈溢出 问题 当我运行我的第一个(主要)android活动并更改屏幕方向时, 该应用程序工作正常,我可以不断改变方向 它仍然有效 当我单击第一个活动上的按钮转到第二个活动时, 屏幕改变,一切加载正常,我上下滚动(一切似乎正常) 但是,当我现在切换方向时(在第二个活动上),该活动将关闭,没有日志错误,并恢复到第一个活动 所以我的问题是,我如何保持切换屏幕方向的能力,而不关闭第二个活动?不确定是什么原因造成的。我已经读到,每当你的屏幕方向改变,它必须破坏和重建活动。但是,如果它在第一个活动上

你好,堆栈溢出

问题 当我运行我的第一个(主要)android活动并更改屏幕方向时, 该应用程序工作正常,我可以不断改变方向 它仍然有效

当我单击第一个活动上的按钮转到第二个活动时, 屏幕改变,一切加载正常,我上下滚动(一切似乎正常)

但是,当我现在切换方向时(在第二个活动上),该活动将关闭,没有日志错误,并恢复到第一个活动

所以我的问题是,我如何保持切换屏幕方向的能力,而不关闭第二个活动?不确定是什么原因造成的。我已经读到,每当你的屏幕方向改变,它必须破坏和重建活动。但是,如果它在第一个活动上起作用,那么为什么它在第二个活动上不起作用呢

以下是第一个活动代码:

    [Activity(Label = "FishinTales: Main Menu", MainLauncher = true, Icon = "@drawable/icon")]
public class Activity_View_MainMenu : Activity
{
    #region Components
    private Model n_model;
    private GridView n_mainMenuGridView;
    #endregion

    protected override void OnCreate(Bundle bundle)
    {
        base.OnCreate(bundle);

        /*
            Load data using if statements. Load serializeable if no settings file.
            Or create new and test if it is accurately passing the custom class to another activity.
        */
        if (((MyApp) this.ApplicationContext).FishingData == null)
        {
            ((MyApp) this.ApplicationContext).LoadFishinTales();
            this.n_model = ((MyApp) this.ApplicationContext).FishingData;
        }
        else
        {
            this.n_model = ((MyApp) this.ApplicationContext).FishingData;
        }


        // Set our view from the "View_MainMenu" layout resource
        SetContentView(Resource.Layout.View_MainMenu);

        this.n_mainMenuGridView = FindViewById<GridView> (Resource.Id.xml_mainMenuGridView);
        this.n_mainMenuGridView.SetNumColumns(2);
        this.n_mainMenuGridView.Adapter = new MainMenuGridAdapter (this);

        this.n_mainMenuGridView.ItemClick += (o, e) => {
            if (e.Position == 0)
            {
                // Navigate to Fish Species
                Intent intent = new Intent(this, typeof(Activity_View_FishSpecies));
                this.StartActivityForResult(intent, RequestCodes.View_FishSpecies);
            }
            else if (e.Position == 1)
            {
                // Navigate to My Favorite Spots
                Toast.MakeText(this, "TODO: Navigate to My Favorite Sports", ToastLength.Long).Show();
                //Intent intent = new Intent(this, typeof(View_MyFavoriteSpots));
                //this.StartActivityForResult(intent, RequestCodes.View_MyFavoriteSpots);
            }
            else if (e.Position == 2)
            {
                // Navigate to My Season
                Toast.MakeText(this, "TODO: Navigate to My Season", ToastLength.Long).Show();
                //Intent intent = new Intent(this, typeof(View_MySeason));
                //this.StartActivityForResult(intent, RequestCodes.View_MySeason);
            }
            else if (e.Position == 3)
            {
                // Navigate to Inventory
                Toast.MakeText(this, "TODO: Navigate to Inventory", ToastLength.Long).Show();
                //Intent intent = new Intent(this, typeof(View_Inventory));
                //this.StartActivityForResult(intent, RequestCodes.View_Inventory);
            }
            else if (e.Position == 4)
            {
                // Navigate to Fishing News
                Toast.MakeText(this, "TODO: Navigate to Fishing News", ToastLength.Long).Show();
                //Intent intent = new Intent(this, typeof(View_FishingNews));
                //this.StartActivityForResult(intent, RequestCodes.View_FishingNews);
            }
            else if (e.Position == 5)
            {
                // Navigate to Settings
                Toast.MakeText(this, "TODO: Navigate to Settings", ToastLength.Long).Show();
                //Intent intent = new Intent(this, typeof(View_Settings));
                //this.StartActivityForResult(intent, RequestCodes.View_Settings);
            }
            else
            {
                // Invalid Response
                Toast.MakeText(this, "Invalid Menu Selection", ToastLength.Long).Show();
            }
        };
    }

    protected override void OnActivityResult(int requestCode, Result resultCode, Intent data)
    {
        // Possibly save data after activity result.?.
    }
}
    [Activity(Label = "FishinTales: Fish Species")]
public class Activity_View_FishSpecies : Activity
{
    #region Components
    private Model n_model;
    private ListView n_fishSpeciesListView;
    #endregion

    protected override void OnCreate(Bundle bundle)
    {
        base.OnCreate(bundle);

        // Get Application Global Model
        this.n_model = ((MyApp) this.ApplicationContext).FishingData;

        // Set our view from the "View_FishSpecies" layout resource
        SetContentView(Resource.Layout.View_FishSpecies);

        this.n_fishSpeciesListView = FindViewById<ListView> (Resource.Id.xml_fishSpeciesListView);
        this.n_fishSpeciesListView.Adapter = new FishSpeciesListAdapter (this.ApplicationContext, this.n_model.SpecieManager.Species);
    }
}
[活动(Label=“FishinTales:Main Menu”,MainLauncher=true,Icon=“@drawable/Icon”)]
公共课堂活动\查看\主菜单:活动
{
#区域成分
私有模型n_模型;
private GridView n_mainMenuGridView;
#端区
创建时受保护的覆盖无效(捆绑包)
{
base.OnCreate(bundle);
/*
使用if语句加载数据。如果没有设置文件,则加载可序列化的数据。
或者创建新的并测试它是否准确地将自定义类传递给另一个活动。
*/
if(((MyApp)this.ApplicationContext.FishingData==null)
{
((MyApp)this.ApplicationContext.LoadFishinTales();
this.n_model=((MyApp)this.ApplicationContext).FishingData;
}
其他的
{
this.n_model=((MyApp)this.ApplicationContext).FishingData;
}
//从“view\u MainMenu”布局资源设置视图
SetContentView(Resource.Layout.View\u主菜单);
this.n_mainMenuGridView=FindViewById(Resource.Id.xml_mainMenuGridView);
此.n_mainMenuGridView.SetNumColumns(2);
this.n_main menugridview.Adapter=新的main menugridadapter(this);
此.n_mainMenuGridView.ItemClick+=(o,e)=>{
如果(e.Position==0)
{
//导航到鱼类物种
意向意向=新意向(此,类型为(活动\视图\鱼种));
此.StartActivityForResult(意图、请求代码、查看鱼种);
}
否则,如果(e.位置==1)
{
//导航到我最喜欢的地点
Toast.MakeText(这是“TODO:导航到我最喜欢的运动”,ToastLength.Long).Show();
//意向意向=新意向(此,类型为(视图_MyFavoriteSpots));
//this.StartActivityForResult(intent、RequestCodes.View\u myfavoritepots);
}
否则如果(e.位置==2)
{
//导航到我的季节
Toast.MakeText(这是“TODO:导航到我的季节”,ToastLength.Long).Show();
//意向意向=新意向(此,类型为(View_MySeason));
//this.StartActivityForResult(intent、RequestCodes.View\u MySeason);
}
否则,如果(e.位置==3)
{
//导航到库存
Toast.MakeText(这是“TODO:导航到库存”,ToastLength.Long).Show();
//意向意向=新意向(此,类型为(查看库存));
//此.StartActivityForResult(意图、请求代码、查看库存);
}
否则,如果(e.位置==4)
{
//导航至钓鱼新闻
Toast.MakeText(这是“TODO:导航到钓鱼新闻”,ToastLength.Long).Show();
//意向意向=新意向(此,类型为(视图\钓鱼新闻));
//this.StartActivityForResult(intent、RequestCodes.View\u FishingNews);
}
否则,如果(e.位置==5)
{
//导航到设置
Toast.MakeText(这是“TODO:导航到设置”,ToastLength.Long).Show();
//意向意向=新意向(此,类型(视图设置));
//this.StartActivityForResult(意图、请求代码、视图设置);
}
其他的
{
//无效响应
Toast.MakeText(这是“无效的菜单选择”,ToastLength.Long).Show();
}
};
}
受保护的覆盖void OnActivityResult(int请求代码、结果代码、意图数据)
{
//可能在活动结果之后保存数据。?。
}
}
这是我第一次活动的图片(毫无问题地改变方向):

下面是第二个活动代码:

    [Activity(Label = "FishinTales: Main Menu", MainLauncher = true, Icon = "@drawable/icon")]
public class Activity_View_MainMenu : Activity
{
    #region Components
    private Model n_model;
    private GridView n_mainMenuGridView;
    #endregion

    protected override void OnCreate(Bundle bundle)
    {
        base.OnCreate(bundle);

        /*
            Load data using if statements. Load serializeable if no settings file.
            Or create new and test if it is accurately passing the custom class to another activity.
        */
        if (((MyApp) this.ApplicationContext).FishingData == null)
        {
            ((MyApp) this.ApplicationContext).LoadFishinTales();
            this.n_model = ((MyApp) this.ApplicationContext).FishingData;
        }
        else
        {
            this.n_model = ((MyApp) this.ApplicationContext).FishingData;
        }


        // Set our view from the "View_MainMenu" layout resource
        SetContentView(Resource.Layout.View_MainMenu);

        this.n_mainMenuGridView = FindViewById<GridView> (Resource.Id.xml_mainMenuGridView);
        this.n_mainMenuGridView.SetNumColumns(2);
        this.n_mainMenuGridView.Adapter = new MainMenuGridAdapter (this);

        this.n_mainMenuGridView.ItemClick += (o, e) => {
            if (e.Position == 0)
            {
                // Navigate to Fish Species
                Intent intent = new Intent(this, typeof(Activity_View_FishSpecies));
                this.StartActivityForResult(intent, RequestCodes.View_FishSpecies);
            }
            else if (e.Position == 1)
            {
                // Navigate to My Favorite Spots
                Toast.MakeText(this, "TODO: Navigate to My Favorite Sports", ToastLength.Long).Show();
                //Intent intent = new Intent(this, typeof(View_MyFavoriteSpots));
                //this.StartActivityForResult(intent, RequestCodes.View_MyFavoriteSpots);
            }
            else if (e.Position == 2)
            {
                // Navigate to My Season
                Toast.MakeText(this, "TODO: Navigate to My Season", ToastLength.Long).Show();
                //Intent intent = new Intent(this, typeof(View_MySeason));
                //this.StartActivityForResult(intent, RequestCodes.View_MySeason);
            }
            else if (e.Position == 3)
            {
                // Navigate to Inventory
                Toast.MakeText(this, "TODO: Navigate to Inventory", ToastLength.Long).Show();
                //Intent intent = new Intent(this, typeof(View_Inventory));
                //this.StartActivityForResult(intent, RequestCodes.View_Inventory);
            }
            else if (e.Position == 4)
            {
                // Navigate to Fishing News
                Toast.MakeText(this, "TODO: Navigate to Fishing News", ToastLength.Long).Show();
                //Intent intent = new Intent(this, typeof(View_FishingNews));
                //this.StartActivityForResult(intent, RequestCodes.View_FishingNews);
            }
            else if (e.Position == 5)
            {
                // Navigate to Settings
                Toast.MakeText(this, "TODO: Navigate to Settings", ToastLength.Long).Show();
                //Intent intent = new Intent(this, typeof(View_Settings));
                //this.StartActivityForResult(intent, RequestCodes.View_Settings);
            }
            else
            {
                // Invalid Response
                Toast.MakeText(this, "Invalid Menu Selection", ToastLength.Long).Show();
            }
        };
    }

    protected override void OnActivityResult(int requestCode, Result resultCode, Intent data)
    {
        // Possibly save data after activity result.?.
    }
}
    [Activity(Label = "FishinTales: Fish Species")]
public class Activity_View_FishSpecies : Activity
{
    #region Components
    private Model n_model;
    private ListView n_fishSpeciesListView;
    #endregion

    protected override void OnCreate(Bundle bundle)
    {
        base.OnCreate(bundle);

        // Get Application Global Model
        this.n_model = ((MyApp) this.ApplicationContext).FishingData;

        // Set our view from the "View_FishSpecies" layout resource
        SetContentView(Resource.Layout.View_FishSpecies);

        this.n_fishSpeciesListView = FindViewById<ListView> (Resource.Id.xml_fishSpeciesListView);
        this.n_fishSpeciesListView.Adapter = new FishSpeciesListAdapter (this.ApplicationContext, this.n_model.SpecieManager.Species);
    }
}
[活动(Label=“鱼类种类:鱼类”)]
公共类活动\查看\鱼种:活动
{
#区域成分
私有模型n_模型;
私有ListView n_fishSpeciesListView;
#端区
创建时受保护的覆盖无效(捆绑包)
{
base.OnCreate(bundle);
//获取应用程序全局模型
this.n_model=((MyApp)this.ApplicationContext).FishingData;
//从“查看鱼种”布局资源设置我们的视图
SetContentView(Resource.Layout.View_FishSpecies);
this.n_fishSpeciesListView=findviewbyd(Resource.Id.xml_fishSpeciesListView);
this.n_fishSpeciesListView.Adapter=新的FishSpeciesListAdapter(this.ApplicationContext,this.n_model.SpecieManager.Species);
}
}
这是我的第二个活动的图像(在我尝试通过倾斜手机将其设置为横向方向后关闭的活动):

你知道为什么会发生这种情况吗?更好的是,对于这个案例来说,什么是一个好的解决办法?请记住,我不希望屏幕保持某种方向。我想如果