これは私にとっては効果があると思われるヘルプを見つけることができなかったため、アクティビティを開始する特別なシナリオです。 私はクラスMrNomAndroidは別のアクティビティからアクティビティを継承するアンドロイドクラスを起動できません
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>
を
このアプリはうまく動作します。 しかし、これを別のアプリに入れようとすると、強制的に閉じることになります。私はこれが動作するように期待されるが、それはない
<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">
:corespondingマニフェストファイルと
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);
}
: 私の他のプロジェクトはこれです。私は終日トライして、私のメインアクティビティから最初のクラス(MrNomGame)を走らせることができません。しかし、それは自分のそれは私の質問の最初の部分に見られるようにうまく動作します。この大きなコードと大きな質問をおかけして申し訳ありませんが、私はこの特定の問題を理解しやすくしたいと思っています。だから、どのように私は主な活動からMrGameGameを始めることができますか?ありがとう。
強制終了とともにログに記録される例外は何ですか? – Jens
アプリケーションが予期せず停止しました。もう一度試してください。そしてlog catにはいくつかのアクティビティ例外があります。 – Fofole
@Fofole、Jensはあなたの携帯電話のメッセージではなく、logcatについて話しています。 – SERPRO