StartupActivityで始まるアプリがあります。
そのStartupActivityは、次のようにサービスを開始します。
startService(new Intent(StartupActivity.this, SamcomService.class));
ある時点で、サービスは、StartupActivityが反応するインテントをブロードキャストすることを決定します。アクティビティは、インテントを受け取ると、次のことを行います。
Intent intent2 = new Intent(StartupActivity.this, DialogActivity.class);
intent2.putExtra("Centrals", list); // list is defined elsewhere
startActivity(intent2);
ご覧のとおり、新しいアクティビティが開始され、そのアクティビティにはたまたまTheme.Dialogがテーマとして含まれています。ダイアログには、ユーザーが何かを選択する必要があるリストが表示されます。その時点で、最初のアクティビティであるStartupActivityに戻す必要があります。戻るを押すと、最初のアクティビティにも戻る必要があります。
DialogActivityのonCreateコードは次のとおりです。
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
final ArrayList<tWorks.Samcom.SICJsonProtocol.Objects.Central> list = (ArrayList<tWorks.Samcom.SICJsonProtocol.Objects.Central>)this.getIntent().getSerializableExtra("Centrals");
// Some more stuff not necessary for this question...
// ....
// ....
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setTitle("Choose");
builder.setItems(items2, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which)
{
// Do some stuff depending on choice
finish();
}
});
builder.create().show();
}
問題は、アプリ全体、つまりすべてのアクティビティなどが消えて、ホーム画面に戻ることです。
「finish()」を呼び出さないと、StartupActivityの上に「オーバーレイ」が残り、それ以上何もできなくなります。戻るを押すと、ホーム画面に戻ります。
では、リストから何かを選択したり、押し戻したりしたときに、DialogActivityを非表示/非表示にするにはどうすればよいですか?