我希望在方向从potrait更改为我正在使用的横向时加载新活动:
@Override
public void onConfigurationChanged(Configuration newConfig)
{
super.onConfigurationChanged(newConfig);
if(newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE)
{
startActivity(new Intent(this, ABCDActivity.class));
}
if(newConfig.orientation == Configuration.ORIENTATION_PORTRAIT)
{
super.onConfigurationChanged(newConfig);
finish();
}
}
但它并没有随着方向的改变而改变我的活动。我错过了什么吗?
答案 0 :(得分:2)
试试这个,
@Override
public void onConfigurationChanged(Configuration newConfig)
{
super.onConfigurationChanged(newConfig);
if(newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE)
{
startActivity(new Intent(this, ABCDActivity.class));
}
}
答案 1 :(得分:1)
在您希望配置的每项活动的Manifest
Activity
标记中,您必须放置以下一行:
机器人:configChanges = “取向|屏幕尺寸”
作为应用程序设计说明...不建议开始关于方向更改的新活动......
答案 2 :(得分:1)
除非您在AndroidManifest.xml中声明了相应的属性,否则不会调用onConfigurationChanged()方法:
android:configChanges="orientation"
答案 3 :(得分:0)
为什么要在方向发生变化时开始新的活动? 最好为不同的配置提供不同的资源!或者在1个Activity中使用Fragments。
可在此处找到更多信息:
编辑:
您可以创建一个在方向更改时重新创建自己的活动。因此,请删除AndroidManifest.xml中的所有configChanges="screenSize..."
。
在活动的xml文件中,您只需链接到另一个片段即可。
再次,有关这方面的更多信息可以在上面的链接中找到。
MyActivity.java
public class MyActivity extends Activity
{
@Override
public void onCreate(Bundle cycle)
{
super.onCreate(cycle);
this.setContentView(R.layout.myactivity);
}
}
RES /布局/ myactivity.xml
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<fragment
class="com.example.myapp.fragments.TimeFrameGraphFragment"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
</FrameLayout>
res / layout-land / myactivity.xml
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<fragment
class="com.example.myapp.fragments.AllDataGraphFragment"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
</FrameLayout>