我是Java android开发的新手。所以我的应用程序存在问题。
我用phoneGap opensource和Jquery移动框架构建了一个Android应用程序。 这通常很好看。
但问题是......当我在运行应用程序后尝试旋转手机时,意外的应用程序正在关闭。
这不只是我的手机在每部Android手机上发生的事情。
我真的想删除应用中的屏幕旋转。
希望你理解
请帮帮我....
答案 0 :(得分:10)
我可能遇到了同样的问题 - 旋转崩溃。我不认为我从教程中复制了AndroidManifest.xml。我没有添加
android:configChanges="orientation|keyboardHidden"
到第1次活动。看到我之前和之后:
之后(工作):
<application
android:icon="@drawable/ic_launcher"
android:label="@string/app_name" >
<activity
android:name=".App"
android:label="@string/app_name" android:configChanges="orientation|keyboardHidden">
<intent-filter>
之前(旋转时崩溃):
<application
android:icon="@drawable/ic_launcher"
android:label="@string/app_name" >
<activity
android:name=".App"
android:label="@string/app_name">
<intent-filter>
不确定您是否确实要修复屏幕或停止崩溃,但如果您想修复纵向或横向,则可以执行以下操作:
<application
android:icon="@drawable/ic_launcher"
android:label="@string/app_name" >
<activity
android:name=".App"
android:label="@string/app_name" android:configChanges="orientation|keyboardHidden"
android:screenOrientation="landscape" >
<intent-filter>
答案 1 :(得分:4)
您必须在主页中使用以下js。
$(document).ready(function() {
var canDetect = "onorientationchange" in window;
var orientationTimer = 0;
var ROTATION_CLASSES = {
"0": "none",
"90": "right",
"-90": "left",
"180": "flipped"
};
$(window).bind(canDetect ? "orientationchange" : "resize", function(evt) {
clearTimeout(orientationTimer);
orientationTimer = setTimeout(function() {
// display the event type and window details
$("#event-type").html(evt.type);
$("#window-orientation").html(window.orientation);
$("#window-width").html(window.innerWidth);
$("#window-height").html(window.innerHeight);
// given we can only really rely on width and height at this stage,
// calculate the orientation based on aspect ratio
var aspectRatio = 1;
if (window.innerHeight !== 0) {
aspectRatio = window.innerWidth / window.innerHeight;
} // if
// determine the orientation based on aspect ratio
var orientation = aspectRatio <= 1 ? "portrait" : "landscape";
// if the event type is an orientation change event, we can rely on
// the orientation angle
var rotationText = null;
if (evt.type == "orientationchange") {
rotationText = ROTATION_CLASSES[window.orientation.toString()];
} // if
$(window).trigger("reorient", [orientation, rotationText]);
}, 500);
});
$(window).bind("reorient", function(evt, orientation, rotation) {
// display the details we have determine from the display
$("#orientation").html(orientation);
$("#rotation-class").html(rotation);
});
});
这对我有用,没有在manifest.xml中做任何事情
答案 2 :(得分:3)
我遇到了同样的问题。我正在使用android:minSdkVersion="8"
和android:targetSdkVersion="16"
开发PhoneGap应用程序。当我尝试将screenSize
添加到android:configChanges
时,它表示screenSize
不存在。然后我减少了targetSdkVersion
,一切都开始完美。这是我的清单文件
<manifest xmlns:android="http://schemas.android.com/apk/res/android" android:windowSoftInputMode="adjustPan"
package="com.planetclub.mobile" android:versionName="1.1" android:versionCode="6">
<supports-screens
android:largeScreens="true"
android:normalScreens="true"
android:smallScreens="true"
android:resizeable="true"
android:anyDensity="true"
/>
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<application android:icon="@drawable/planet" android:label="@string/app_name" >
<activity android:name=".Main"
android:label="@string/app_name"
android:configChanges="orientation|keyboardHidden|locale" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
<uses-sdk android:minSdkVersion="8" android:targetSdkVersion="8"/>
答案 3 :(得分:1)
我认为您的问题与任何特定框架无关;很可能你引用了一些无效的实例。请记住,方向更改会导致系统完成保存实例状态,暂停,停止,销毁,然后使用已保存状态创建活动的新实例的过程。因此,如果你 - 例如,保存对某个实例的引用,那么在方向更改后,引用不再有效(可能为null)。
您应该尝试修复它,请检查reference。但是,如果您确实不想允许更改屏幕方向,请将以下属性添加到清单文件中的主要活动:
android:screenOrientation="portrait/landscape"
android:configChanges="keyboardHidden|orientation|screenSize">
答案 4 :(得分:1)
如果您正在为Android API 13或更高版本开发,则需要将screenSize添加到android:configChanges以防止崩溃。像这样:
android:configChanges="orientation|screenSize|keyboardHidden"
在此处找到:
https://groups.google.com/forum/?fromgroups#!msg/phonegap/HYUfLJF1oH0/r9rZTfz_cccJ
答案 5 :(得分:1)
我遇到了同样的问题。当我从肖像移动到风景或从风景到肖像时,应用程序就死了。没理由。
我检查了android:configChanges="orientation|keyboardHidden"
并添加了屏幕尺寸,但没有变化
我做了很多改变。我终于取消了这条线并重写了它并且它起作用了。
我认为该行存在Eclipse编辑器看不到的问题而且不可见。原始行是来自phonegap安装的复制/粘贴。
答案 6 :(得分:0)
我遇到了同样的问题。但我的android:configChanges设置正确。最后我发现我需要将miniSdkVersion从15改为7.