0

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を非表示/非表示にするにはどうすればよいですか?

4

1 に答える 1

2

背面にスタートアップ画面が開くはずです。マニフェストを確認してください。マニフェストで、android.nohistry=trueがある場合は起動アクティビティを確認します。削除するだけです。

于 2012-11-30T19:46:06.543 に答える