I couldn’t find any help that would work for me so this is a particular case scenario of starting an activity.
I have a project in which i have the class MrNom
public class MrNomGame extends AndroidGame {
public Screen getStartScreen() {
return new LoadingScreen(this);
}
the AndroidGame class looks like this:
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;
}
}
and I also have the corresponding manifest file which contains the following :
<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>
This app works just fine.
But if I try to put this in another app, I get force close.
My other project is this:
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);
}
with the coresponding manifest file :
<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">
I would expect this to work but it doesn’t. I tryed all day and I can’t get my first class (MrNomGame) running from my MainActivity. However on it’s own it works just fine as seen on the first part of my question. Sorry for this big piece of code and big question but I just wanted to make it easier for you to understand this specific problem I am getting. So, how can I start MrNomGame from my main activity ? Thanks.
This wont work, try using fully qualified name. Lyk
Sorry if I am completely wrong.