2

だから私は「android:style/Theme.Dialog」へのポップアップ感謝として表示されるアクティビティを開始するサービスを持っています

このアクティビティは、アプリケーションのリストとともにリストビューを表示します。リストビューの各要素には、アプリケーションの簡単な説明と2つのボタンがあります。1アプリケーションを起動するため2より多くの情報を含むトーストを表示するため。

これが私のサービスのコードです:それは活動を開始します

Intent intent = new Intent(this, PopUpActivity.class);
intent.addFlags(Intent.FLAG_DEBUG_LOG_RESOLUTION);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
getApplicationContext().startActivity(intent);  

このアクティビティでは、カスタムArrayAdapterに適合した、リストビューを備えたカスタムレイアウトを使用します

このアダプターでは、現在のアプリケーションを開始するためにスタートボタンにアクションを設定しました

Button lanceur = (Button) v.findViewById(R.id.Buttonlancer);
            lanceur.setOnClickListener(new View.OnClickListener() {

                public void onClick(View v) {
                    p.start(mcontext);
                }
            });

p.startを使用して、アプリケーションを起動します。

しかし今、アプリケーションから「戻る」を押すと、ポップアップに戻ります...そして別のアプリケーションを開始できます。私はそれが可能になりたくありません。

そのため、PopupActivityを却下/破棄/終了できればいいのですが、自分のコードではうまくいきません。

4

3 に答える 3

3

これは と で行うことができstartActivityForResult()ます onActivityResult()

 Intent intent = new Intent(this, PopUpActivity.class);
 intent.addFlags(Intent.FLAG_DEBUG_LOG_RESOLUTION);
 intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
 getApplicationContext().startActivityForResult(intent,1); 

 @Override
 protected void onActivityResult(int requestCode, int resultCode, Intent data) {
     Log.d("CheckStartActivity","onActivityResult and resultCode = "+resultCode);
     // TODO Auto-generated method stub
     super.onActivityResult(requestCode, resultCode, data);
     this.finish();
 }

AndroidManifest.xml に追加します。

<activity android:name=".PopUpActivity" android:noHistory="true" />

于 2012-06-29T15:17:24.123 に答える
0

次のようにluanchコードを変更します。

Button lanceur = (Button) v.findViewById(R.id.Buttonlancer);
lanceur.setOnClickListener(new View.OnClickListener() {

    public void onClick(View v) {
        p.start(mcontext);
        finish();
    }
});

また、おそらくサービスでgetApplicationContext()を呼び出す必要はないはずですが、さらにコードを貼り付けることができますか?あなたはそれをどのように構成しているかに応じて、NameOfYourService.this.startActivity();あるいはおそらくそれを使用することができるはずです。startActivity();

また、Developer Docsによると、サービスから直接アクティビティを開始することは非常に悪い考えであることに注意してください。理由については、この質問を参照してください。サービスがアクティビティを開始しないのはなぜですか。

于 2012-06-29T15:12:38.537 に答える
0

次のを呼び出した後、ポップアップとして表示されるfinish()あなたの内部を呼び出すだけです。ActivitystartActivity

于 2012-06-29T15:08:09.110 に答える