2012-05-11 1 views
0

のAndroid 2.1を削除する私は、チェックボックスを経由して、ダイアログをテーマにした活動を開き、活動が意図してこの新しいダイアログをテーマにした活動を作成イム機能アンドロイドは - 日食</p> <p>を経由してダイアログをテーマにした活動

をonCheckedています。

問題は、私はそれを終了したら、ダイアログのテーマアクティビティを却下するのですか? (今のように、ボタンをクリックするだけで前の活動に戻るために新しい意思を伝えなければなりません)

どんな助けもあります。

コードスニペット:

主な活動:

cbReminder.setOnCheckedChangeListener(new OnCheckedChangeListener() { 

    public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { 
     if (isChecked) 
     {     
      Intent intent = new Intent(getApplicationContext(), DateTimeDialog.class); 
      startActivity(intent); 
     } 
    } 
}); 

ダイアログをテーマにした活動:あなたが指定されているように、意図が実際に以前の活動に戻ることが必要とすべきではなかった

public void onClick(View v) { 
    if (v.getId() == R.id.b_datetime_save) 
    { 

    } 
    else if (v.getId() == R.id.b_datetime_cancel) 
    { 
     finish(); 
     Intent intent = new Intent(getApplicationContext(), MakeNoteActivity.class); 
     startActivity(intent); 
    } 
} 
+1

finish()はそのジョブを実行する必要があります。どのような方法でもアクティビティ履歴を上書きしていないことを確認してください。 – Overv

+0

ええ、私は仕上げ()を使用しましたが、何らかの理由で私は意図を追加しました、ありがとう、私は分の良いカップルを救った。 – Pisti

+0

ですから、意図を追加する前にfinish()だけでテストしていませんか? :P – Overv

答えて

1

除去される。

ダイアログボックスから返された後にチェックボックスをオフにするには、startActivityForResultを使用して、戻ったときのコールバックを設定します。

は、このようなあなたのダイアログを開きます。

Intent intent = new Intent(getApplicationContext(), DateTimeDialog.class); 
startActivityForResult(intent, UNIQUE_IDENTIFIER); 

その後、同じ活動にコールバックを追加します。

@Override 
protected void onActivityResult(int requestCode, int resultCode, Intent data) 
{ 
    if (requestCode == UNIQUE_IDENTIFIER) 
    { 
     cbReminder.setChecked(false); 
    } 
} 

UNIQUE_IDENTIFIERは一意にこのダイアログを識別する任意の番号を指定できます。これ以上質問があれば教えてください。

+0

ええ、それはうまく動作しますが、私は別の問題を抱えています。一度ダイアログボックスのテーマアクティビティを完了すると、メインアクティビティのチェックボックスをオフにする必要があります。 – Pisti

+0

ありがとう、完璧に働いています! – Pisti

関連する問題