我的演示应用程序出现问题。
请检查我附加的屏幕,
我只想在纵向视图中活动A (应该不改变横向模式),所以我在清单文件中声明ScreenOrientation="protrait"
并且活动B (主题是对话框)应该在任何模式(纵向或横向)中更改,但当我移动我的时候横向模式下的手机活动B 不会改变其方向。
活动A
package com.example.activityorientation;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.Menu;
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Intent it = new Intent(getApplicationContext(),DialogAct.class);
startActivity(it);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
}
活动B
package com.example.activityorientation;
import android.app.Activity;
import android.os.Bundle;
public class DialogAct extends Activity{
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.dailogact);
}
}
清单文件,
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.activityorientation"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk
android:minSdkVersion="8"
android:targetSdkVersion="17" />
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name="com.example.activityorientation.MainActivity"
android:label="@string/app_name"
android:screenOrientation="portrait">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity
android:name="com.example.activityorientation.DialogAct"
android:label="@string/app_name"
android:theme="@android:style/Theme.Dialog"/>
</application>
</manifest>
需要帮助,
感谢。
答案 0 :(得分:0)
覆盖您活动中的onConfigurationChanges()
方法。希望它可以帮助你。
将此信息放在您的清单android:configChanges="screenLayout|screenSize|orientation"
答案 1 :(得分:0)
你试过----&gt;
<activity
android:name="com.example.activityorientation.DialogAct"
android:label="@string/app_name"
android:theme="@android:style/Theme.Dialog"
android:screenOrientation="fullsensor"/>
答案 2 :(得分:0)
尝试在活动B 中使用android:screenOrientation="sensorPortrait|sensorLandscape"
。
答案 3 :(得分:0)
当在未指定方向(默认)的情况下在顶部启动“不完整”屏幕活动时,它将遵循暂停模式后面的全屏活动方向。 但是如果我们故意为非全屏活动指定方向值,它也会强制在暂停模式下的全屏活动方向随之改变。
活动B不是全屏活动。 因此,当我们启动活动B时,活动A仅进入暂停模式。 现在针对这种情况, 如果对于活动B屏幕方向未指定或未定义,它将与活动A的方向相同。 如果您故意将活动B的屏幕方向指定为横向,它会将活动A也更改为横向模式。
我建议让活动B完全活动。
答案 4 :(得分:0)
将此代码放入OnCreate()。
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
OnCreate()方法示例(工作):
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
**setUIComponents();**
}
public void setUIComponents() {
setContentView(R.layout.activity_ccap);
**setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);**
firstName = (EditText) findViewById(R.id.firstNameEditText);
middleName = (EditText) findViewById(R.id.editText2);
lastName = (EditText) findViewById(R.id.editText1);
bussinessName = (EditText) findViewById(R.id.bussinessNameEditText);
DOB = (EditText) findViewById(R.id.DOB);
updateTextView = (TextView) findViewById(R.id.textView1);
this.countyNumber = (Spinner) findViewById(R.id.countySpinner);
this.numberPerPage = (Spinner) findViewById(R.id.itemsPerPageSpinner);
popSpinner();
submit = (Button) findViewById(R.id.button1);
onSubmit();
}
以上代码适用于我的活动;尝试使用您希望保留“纵向”的活动中的此代码。此外,如果您想要不同的方向,只需将ActivityInfo.SCREEN_ORIENTATION_PORTRAIT
更改为其他内容,例如ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE;
特别适合您,这应该有效:
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR);
修改强>
这应该有效:
package com.example.activityorientation;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.Menu;
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
**setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);**
Intent it = new Intent(getApplicationContext(),DialogAct.class);
startActivity(it);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
}
现在进入行动B:
package com.example.activityorientation;
import android.app.Activity;
import android.os.Bundle;
public class DialogAct extends Activity{
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.dailogact);
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR);
}
}
答案 5 :(得分:0)
我有同样的问题,它对我有所帮助: 添加AndroidManifest for Activity B
android:screenOrientation="fullSensor"
答案 6 :(得分:-1)
在活动B的AndroidManifest.xml
中添加以下内容。
android:configChanges="orientation"
它将在两个方向都有效。
OR
检查您的手机设置或检查设备的动作是否已开启。