0

問題:

私は自分のAndroidアプリケーション用にステートマシンを作成しました。これは、Android4.0.3StateMachineの拡張である別個のクラスです。そして、このSMがアクティビティを切り替えることができるようにしたいと思います。
実装することは可能ですか?
つまり、

startActivity(new Intent(CurrentActivity.this, NextActivity.class))

現在のアクティビティからではなく、ステートマシン内から呼び出されました。
私の悪い英語に感謝し、申し訳ありません。



私の解決策:

(@ Jan-Henkに特に感謝します)

CurrentActivity呼び出し
stateMachine.sendMessage(SM.MSG_SWITCH_ACTIVITY, CurrentActivity.this);
内とState内に、次のコードを配置します。

@Override
public void exit()
{
    final Intent intent = new Intent(context, NextActivity.class);
    intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); // necessary to avoid exceptions
    context.startActivity(intent);
}

@Override
public boolean processMessage(final Message message)
{
    boolean returnedValue;
    switch(message.what)
    {
        case MSG_SWITCH_ACTIVITY:
            //sendMessage(obtainMessage(MSG_SWITCH_ACTIVITY));
            context = (Context) message.obj; // context - it's a field of my state machine
            transitionTo(nextActivity);
            returnedValue = HANDLED;
        break;
        default:
            returnedValue = NOT_HANDLED;
        break;
    }           
    return returnedValue;
}
4

2 に答える 2

1

startActivityContextオブジェクトから呼び出すことができます。http://developer.android.com/reference/android/content/Context.html#startActivity (android.content.Intent )を参照してください。

于 2012-07-03T22:04:49.893 に答える
0

次のアクティビティを呼び出すには、Jan-henkが述べたように、新しいインテントを設定して開始アクティビティを呼び出すだけです。

Intent intent = new Intent(this, yoursecondclass.class);
startActivity(intent);
于 2012-07-03T22:48:00.507 に答える