我可以在运行libgdx之前运行一个Activity吗?

时间:2012-07-13 16:43:54

标签: android bluetooth libgdx

因为我有异常运行 mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter(); 在libgdx的render()中, 我有一个想法,首先在Android活动中运行蓝牙设置 然后关闭活动并初始化libgdx。

以下代码崩溃:

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):ERROR:thread attach failed”。 但正如我所说的没有崩溃信息。

这里出了点问题...... 我不知道如何正确编写这样的代码。 感谢。

2 个答案:

答案 0 :(得分:2)

是的,你可以在运行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>

答案 1 :(得分:0)

无论如何这都不会起作用,但我认为由于StartActivity未在Manifest中声明,它可能会崩溃。