問題:
私は自分の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;
}