无法在应用程序onCreate中启动活动

时间:2011-11-14 10:45:50

标签: android

我正在尝试使用处理程序在n秒之后启动一个活动。应用程序在startActivity调用时崩溃了,所以我将处理程序代码放在应用程序的onCreate中,它仍然崩溃(这让我觉得错误来自于我没有使用{{1}好吧):

startActivity

奇怪的是,通过使用完全相同的代码但不同的上下文从视图调用此工作:

    @Override
    public void onCreate(){
            String roomName = this.getSettingValue(R.string.PREFERENCES_ROOM_NAME, "");
            Room room;
            try {
                room = this.getRoomWithName(roomName);
            } catch (ReservatorException ex) {
                    Toast err = Toast.makeText(this, ex.getMessage(),
                        Toast.LENGTH_LONG);
                    err.show();
                    return;
            }
            Intent i = new Intent(this, RoomActivity.class);
            i.putExtra("room", room);
            this.startActivity(i);
    }

我对Android很陌生......所以可能在这个问题中缺少信息,或者我甚至可能会尝试做一些完全愚蠢的事情谁知道呢?

修改

链接到堆栈跟踪:http://pastebin.com/vh2QC3xz

EDIT2

以下是我的代码的处理程序版本(所以我最后要做的是):

        Intent i = new Intent(getContext(), RoomActivity.class);
        // ...

4 个答案:

答案 0 :(得分:1)

好的......我终于解决了我的问题,主要归功于@Drax

显然,您无法从应用程序启动活动......您需要一个活动实例。所以:

public class ReservatorApplication extends Application { 

    @Override
    public void onCreate(){
        Intent i = new Intent(this, RoomActivity.class);
        this.startActivity(i);
    }
}

无效,导致RunTimeException ...

答案 1 :(得分:0)

当您使用“this”在处理程序中启动活动时,会担心崩溃。它将采用处理程序的上下文。当你执行getContext()时,它将采用活动上下文。

答案 2 :(得分:0)

Intent i = new Intent(YourActivityName.this, RoomActivity.class);

Intent i = new Intent(getBaseContext(), RoomActivity.class);

答案 3 :(得分:0)

如果没有看到来自logcat的堆栈跟踪,很难回答,但我发现有时你需要在启动Activity之前将应用程序上下文传递给新的Intent。

试试这一行:

Intent i = new Intent(getApplicationContext(), RoomActivity.class);