Android-删除以对话框为主题的活动

Android-删除以对话框为主题的活动,android,Android,通过eclipse的Android 2.1 我有一个活动,通过复选框onChecked函数打开一个以对话框为主题的活动 我正在创建这个新的以对话为主题的活动 问题是,一旦我完成对话主题的活动,我该如何取消它?(现在的情况是,我必须发送一个新的意图,以便通过单击按钮返回到以前的活动) 任何帮助都将不胜感激 代码段: 主要活动: cbReminder.setOnCheckedChangeListener(new OnCheckedChangeListener() { public void

通过eclipse的Android 2.1

我有一个活动,通过复选框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);
    }
}
@Override
protected void onActivityResult( int requestCode, int resultCode, Intent data )
{
    if ( requestCode == UNIQUE_IDENTIFIER )
    {
        cbReminder.setChecked( false );
    }
}
对话主题活动:

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);
    }
}
@Override
protected void onActivityResult( int requestCode, int resultCode, Intent data )
{
    if ( requestCode == UNIQUE_IDENTIFIER )
    {
        cbReminder.setChecked( false );
    }
}

正如您所指定的,返回到上一个活动确实不需要该意图,应该将其删除

要在从对话框返回后取消选中该复选框,可以使用
startActivityForResult
并设置返回时的回调

按如下方式打开对话框:

Intent intent = new Intent( getApplicationContext(), DateTimeDialog.class );
startActivityForResult( intent, UNIQUE_IDENTIFIER );
然后向同一活动添加回调:

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);
    }
}
@Override
protected void onActivityResult( int requestCode, int resultCode, Intent data )
{
    if ( requestCode == UNIQUE_IDENTIFIER )
    {
        cbReminder.setChecked( false );
    }
}

UNIQUE\u标识符可以是唯一标识此对话框的任何数字。如果您还有任何问题,请告诉我。

finish()应该做这项工作,您确定您没有以任何方式覆盖活动历史记录吗?是的,我使用finish(),但出于某种原因我添加了意图,谢谢,为我节省了他妈的好几分钟。所以在添加意图之前,您没有仅使用finish()进行测试吗是的,它工作得很好,但是我现在有另一个问题,我需要取消选中主活动中的复选框,一旦我完成了以对话框为主题的活动,你知道怎么做吗?