2011-11-10 4 views
0

これは私にとっては効果があると思われるヘルプを見つけることができなかったため、アクティビティを開始する特別なシナリオです。 私はクラス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を始めることができますか?ありがとう。

+1

強制終了とともにログに記録される例外は何ですか? – Jens

+0

アプリケーションが予期せず停止しました。もう一度試してください。そしてlog catにはいくつかのアクティビティ例外があります。 – Fofole

+0

@Fofole、Jensはあなたの携帯電話のメッセージではなく、logcatについて話しています。 – SERPRO

答えて

2

これは機能しません。完全修飾名を使用してください。 Lyk

   android:name="YourPackageName.MrNomGame" 

申し訳ありませんが、私は完全に間違っています。

+0

私はすでにこれを修正しましたが、これは良い答えです。 – Fofole

1

android.screenOrientationandroid:screenOrientationに変更してみてください。 1つのアプリケーションでは動作しますが、他のアプリケーションでは動作しないので、これはそうではないかもしれませんが、やはりタイプミスです。

+0

これは私の質問に答えません – Fofole

関連する問題