2012-07-13 62 views
0

因爲我有例外libgdx運行 mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter(); 的render(), 我有一個想法在Android的活動 首先運行的藍牙設置,然後關閉該活動並初始化libgdx。運行libgdx之前可以運行一個Activity嗎?

下面的代碼崩潰:

public class MyActivity extends AndroidApplication { 
    public void onCreate (android.os.Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setRequestedOrientation (ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE); 

     Intent myIntent = new Intent(MyActivity.this, StartActivity.class); 
     startActivity(myIntent); 

     initialize(new MyGame(), false); //run libgdx 
    } 
} 

StartActivity如下(後來這將是遊戲的標題和藍牙設置):

public class StartActivity extends Activity { 
    /** Called when the activity is first created. */ 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 

     TextView text = new TextView(this); 
     text.setText("Hello World, Android"); 
     setContentView(text); 

     try { 
      Thread.sleep(7000); 
     } 
     catch (InterruptedException e) {}; 
     finish(); 
     return; 
    } 
} 

沒有崩潰的消息,但應用程序保持與黑色的屏幕(即使沒有 「你好」 消息) 如果我添加以下內容:

Intent i = new Intent(this, MyActivity.class); 
startActivity(i); 

在logcat中有「E/AndroidRuntime(612):錯誤:線程連接失敗」。 但正如我所說沒有崩潰消息。

這裏有點不對勁...... 我不知道如何正確編寫這樣的代碼。 謝謝。

+0

LogCat輸出? – 2012-07-13 17:21:22

回答

0

無論如何這不會起作用,但我認爲它可能會崩潰,因爲未在Manifest中聲明StartActivity。

+0

IntelliJ IDEA在創建活動類後添加了到清單 – nms 2012-07-14 02:31:48

1

是的,您可以在運行libgdx之前啓動一項活動。不要先啓動libgdx的東西。開始藍牙設置,然後在準備就緒時致電Intent開始實際的遊戲。

像這樣:

public class BluetoothActivity extends Activity { 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.bluetoothsettings); 
     Button startGame = (Button)findViewById(R.id.btnStartGame); 

     // handle set start click 
     startGame.setOnClickListener(new OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       Intent intent = new Intent(BluetoothActivity.this, GameActivity.class); 
       BluetoothActivity.this.startActivity(intent); 
      } 
     }); 
    } 
} 

那麼你的遊戲活動可以只是正常的一個擴展AndroidApplication像你有以上。

當然,確保您的AndroidManifest.xml首先啓動BluetoothActivity,而不是libgdx。

<activity android:name=".BluetoothActivity"> 
    <intent-filter> 
    <action android:name="android.intent.action.MAIN" /> 
    <category android:name="android.intent.category.LAUNCHER" /> 
    </intent-filter> 
</activity> 
+0

我想知道類似的東西。可以說,只是使用libgdx的部分像動畫一樣在活動頁眉或頁腳?如果不是,你可以從Libgdx屏幕導航到一個活動?來來回回? – 2012-07-25 02:03:10

+0

@CodeDroid我知道你可以在幾個中使用libgdx作爲一個'Activity',我知道你可以來回移動。我這樣做的方式是通過使用android主菜單的「Activity」,然後使用libgdx作爲遊戲。如果用戶按下後退按鈕,android系統將卸載當前的Activity(libgdx)並重新加載堆棧中的下一個(主菜單)。我不認爲你可以做一個頁眉或頁腳,因爲libgdx運行的OpenGL ES,雖然我不知道這一點。 – 2012-07-25 04:16:12

+0

@SteveBlackwell我使用了上面提到的完全相同的技術,但是當我回到libgdx活動時,我得到一個空白屏幕!有任何想法嗎? 檢查這裏的問題http://stackoverflow.com/questions/26009621/blank-black-screen-while-shifting-between-activities-android – 2014-09-24 08:22:12

相關問題