我找不到任何对我有帮助的帮助,所以这是启动活动的特殊情况。 我有一个项目,其中我有类MrNom
public class MrNomGame extends AndroidGame {
public Screen getStartScreen() {
return new LoadingScreen(this);
}
AndroidGame类看起来像这样:
public abstract class AndroidGame extends Activity implements Game{
/**
* @uml.property name="renderView"
* @uml.associationEnd inverse="game:ro.lasting.androidgames.framework.impl.AndroidFastRenderView"
*/
public static AndroidFastRenderView renderView;//we draw to this and it manages the main loop thread
/**
* @uml.property name="graphics"
* @uml.associationEnd
*/
private Graphics graphics;
/**
* @uml.property name="audio"
* @uml.associationEnd
*/
private Audio audio;
/**
* @uml.property name="input"
* @uml.associationEnd
*/
private Input input;
/**
* @uml.property name="fileIO"
* @uml.associationEnd
*/
private FileIO fileIO;
/**
* @uml.property name="screen"
* @uml.associationEnd
*/
private Screen screen;//holds the currently active screen
/**
* @uml.property name="wakeLock"
* @uml.associationEnd
*/
private WakeLock wakeLock;//we use this to keep the screen for dimming
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
/*make activity fullscreen*/
requestWindowFeature(Window.FEATURE_NO_TITLE);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN);
//setup artificial framebuffer
boolean isLandscape = getResources().getConfiguration().orientation ==
Configuration.ORIENTATION_LANDSCAPE;
int frameBufferWidth = isLandscape ? 480 : 480;
int frameBufferHeight = isLandscape ? 320 : 320;
Bitmap frameBuffer = Bitmap.createBitmap(frameBufferWidth,
frameBufferHeight, Config.RGB_565);//Bitmap instance has an RGB565 color format for not wasting memory and speed up the drawing
//Calculate scaleX and scaleY values that SingleTouchHandler
// and MultiTouchHandler classes will use to transform the
// touch event coordinates to our fixed-coordinate system
float scaleX = (float) frameBufferWidth / getWindowManager().getDefaultDisplay().getWidth();
float scaleY = (float) frameBufferHeight / getWindowManager().getDefaultDisplay().getHeight();
//renderView = new AndroidFastRenderView(this, frameBuffer);
graphics = new AndroidGraphics(getAssets(), frameBuffer);
fileIO = new AndroidFileIO(getAssets());
audio = new AndroidAudio(this);
input = new AndroidInput(this, renderView, scaleX, scaleY);
screen = getStartScreen();
setContentView(renderView);
//if(ro.lasting.androidgames.mrnom.MainMenuScreen.sinvite)setContentView(ro.lasting.androidgames.mrnom.R.layout.invite);
PowerManager powerManager = (PowerManager)
getSystemService(Context.POWER_SERVICE);
wakeLock = powerManager.newWakeLock(PowerManager.FULL_WAKE_LOCK, "GLGame");
}
public void onResume() {
super.onResume();
wakeLock.acquire();
screen.resume();
renderView.resume();
}
public void onPause() {
super.onPause();
wakeLock.release();
renderView.pause();
screen.pause();
if (isFinishing())
screen.dispose();
}
/**
* @return
* @uml.property name="input"
*/
public Input getInput() {
return input;
}
/**
* @return
* @uml.property name="fileIO"
*/
public FileIO getFileIO() {
return fileIO;
}
/**
* @return
* @uml.property name="graphics"
*/
public Graphics getGraphics() {
return graphics;
}
/**
* @return
* @uml.property name="audio"
*/
public Audio getAudio() {
return audio;
}
/**
* @param screen
* @uml.property name="screen"
*/
public void setScreen(Screen screen) {
if (screen == null)
throw new IllegalArgumentException("Screen must not be null");
this.screen.pause();
this.screen.dispose();
screen.resume();
screen.update(0);
this.screen = screen;
}
public Screen getCurrentScreen() {
return screen;
}
}
我还有相应的清单文件,其中包含以下内容:
<activity android:name=".MrNomGame"
android:label="@string/app_name"
android.screenOrientation="landscape"
android:configChanges="keyboard|keyboardHidden|orientation">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
此应用程序工作得很好。 但如果我试着把它放在另一个应用程序中,我就会强行关闭。 我的另一个项目是:
public class MainActivity extends Activity{
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.endgame);
Intent intent = new Intent(this,MrNomGame.class);
//intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);
}
使用相应的清单文件:
<activity android:name=".MainActivity" android:theme="@style/ThemeFullScreenNoTitle"
android:label="@string/app_name" android:screenOrientation="landscape">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name=".MrNomGame" android:label="@string/app_name"
android.screenOrientation="landscape" android:configChanges="keyboard|keyboardHidden|orientation">
我希望这可行,但事实并非如此。我整天都在尝试,但是我无法让我的第一堂课(MrNomGame)从我的MainActivity中运行。然而,就我自己而言,它可以正常工作,如我的问题的第一部分所示。很抱歉这段大问题和重大问题,但我只是想让你更容易理解我得到的这个具体问题。那么,我如何从主要活动中启动MrNomGame?感谢。
答案 0 :(得分:2)
android:name=".MrNomGame"
这不会起作用,请尝试使用完全限定名称。 Lyk
android:name="YourPackageName.MrNomGame"
对不起,如果我完全错了。
答案 1 :(得分:1)
尝试将android.screenOrientation
更改为android:screenOrientation
。这可能不是它,因为它适用于1个应用程序而不是其他应用程序,但它仍然是一个错字。