Убийство одного действия от другого

У меня есть два действия A и B. B - прозрачный проход через активность, и A видно. Я хочу убить B, нажав кнопку A.

Вот что я пробовал до сих пор:

B obj=new B();
obj.finish();

Я создал объект B и попытался его убить. Это не сработало.

intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
                intent.putExtra("keep", true);
                startActivity(intent);

То, что должен сделать этот код, - это очистить верхнюю часть активности, которая является B и снова называть B, за исключением того, что я передаю такое значение, чтобы B убил себя через несколько секунд.

По какой-то причине это только сбивало больше случаев активности. Или, по крайней мере, я думаю, что произошло, потому что экран стал пиксельным из-за многих прозрачных действий.

Вот мой манифест:

<activity
        android:name="com.xxx.xxx.B"
        android:excludeFromRecents="true"
        android:theme="@android:style/Theme.Translucent.NoTitleBar"
        android:clearTaskOnLaunch="true" >
    </activity>

Что мне нужно сделать, чтобы, когда я нажимаю кнопку, когда активность отображается, а второй раз ее убивает? Очевидно, что часть создания позаботилась. Моя активность B всплывает, я хочу убить ее сейчас, когда B находится сверху.

ИЗМЕНИТЬ

Я попробовал это с checkbox, вот код:

enable.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View arg0) {
            // TODO Auto-generated method stub
            finishActivity(0);
            Intent intent = new Intent(A.this, B.class);
            if (enable.isChecked()) {
                intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
                intent.putExtra("keep", true);
                intent.putExtra("value", 10);
                startActivityForResult(intent, 0);
            }
            else
            {
                intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
                intent.putExtra("keep", false);
                startActivityForResult(intent, 0);
            }
        }
    });

Когда включена опция enable, вызывается действие, которое работает нормально. Но они продолжают накапливаться. Это не похоже на A- > B- > A- > B, когда я проверяю и снимаю флажок checkBox. Это A- > B- > BB- > BBB

Ответ 1

Вы можете попытаться непосредственно убить действие, вызвав статический метод в этом действии:

Активность A должна иметь переменную

 static ActivityA activityA;

В состоянии onCreate:

 activityA = this;

и добавьте этот метод:

public static ActivityA getInstance(){
   return   activityA;
 }

В действии B вызовите функцию getInstance()

ActivityA.getInstance().finish();     

Ответ 2

Вы можете остановить другое действие, вызвав Activity.finish(). Кроме того, вы можете использовать Activity.finishActivity() для завершения действия, начатого startActivityForResult().

Ответ 3

Я нашел хороший способ закончить одну деятельность от другой, она похожа на то, что сделал Люмис. Поэтому, если вы хотите закрыть ActivityA из ActivityB, вы можете сделать это:

В ActivityA do:

className = this.getClass().getName();

и передать его в AvtivityB. Затем в ActivityB выполните:

((Activity) Class.forName(className).newInstance()).finish();

Вы можете поместить строку с именем своего класса в className самостоятельно, но она также должна быть полным именем с пакетом.

Ответ 4

Создать статическую переменную класса для сохранения экземпляра:   static sampleActivity sampleActivity;

Вкл. Создание первой операции сохраните экземпляр, например:       инцидентная активность = это;

Создайте статический метод для получения экземпляра:

public static SampleActivity getInstance(){
    return   sampleActivity;
}

где вы хотите позвонить:

SampleActivity.getInstance().finish();

он действительно работает, С уважением,