Mat*_*ias 1 android android-orientation android-activity
在我的Android应用程序中,我有一个主要活动"MyActivity",它覆盖了onConfigurationChanged()方法.在该方法中,我检查方向的变化,如果更改为横向,则我调用另一个活动:
@Override
public void onConfigurationChanged(Configuration newConfig)
{
if(newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE)
{
super.onConfigurationChanged(newConfig);
startActivity(new Intent(this, BaseFullScreenActivity.class));
}
}
Run Code Online (Sandbox Code Playgroud)
然后,当我将移动设备更改为横向时,将调用其他活动类"BaseFullScreenActivity",这可以正常工作.在该被调用的活动中,我再次覆盖onConfigurationChanged()方法以再次结束此子活动:
@Override
public void onConfigurationChanged(Configuration newConfig)
{
if(newConfig.orientation == Configuration.ORIENTATION_PORTRAIT)
{
super.onConfigurationChanged(newConfig);
finish();
}
}
Run Code Online (Sandbox Code Playgroud)
但是,在第二个方向更改(回到纵向),这应该结束我的孩子活动并再次显示主要活动,应用程序崩溃,我收到以下错误:
android.app.SuperNotCalledException:
Activity MyActivity did not call through to super.onConfigurationChanged()
Run Code Online (Sandbox Code Playgroud)
我在两个活动中都覆盖了onStop()方法并调用了super.onStop(),但这对我没有帮助.
还有其他想法吗?
在此先感谢您的帮助!
为什么不做错误所暗示的?如果您将调用移到if语句之外的超类,则您的应用程序不会在第二个方向更改时崩溃.
@Override
public void onConfigurationChanged(Configuration newConfig)
{
super.onConfigurationChanged(newConfig);
if(newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE)
{
startActivity(new Intent(this, BaseFullScreenActivity.class));
}
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
1610 次 |
最近记录: |