2015-06-08 2 views
1

У меня есть активность с пользовательским списком. В моем представлении списка есть два типа элементов, с разным расположением. На деталях есть переключатель, и когда я поворачиваю переключатель я иду активность А, и когда я перехожу на коммутаторе я иду активность В.OnBackПредупреждение нескольких экземпляров одной и той же активности

Вот мой код:

Switch enable = (Switch) rowView.findViewById(R.id.enable); 
enable.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { 
       @Override 
       public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { 
        if (isChecked) { 
       Intent intentChange = new Intent(getContext(), ActivityA.class); 
         intentChange.putExtra(PROPERTY, "test1"); 
       ((Activity)getContext()).startActivityForResult(intentChange, 100); 

        } else { 
         Intent newIntent=newIntent(getContext(),ActivityB.class); 
       ((Activity)getContext()).startActivityForResult(newIntent, 200); 

        } 
       } 
      }); 

В каждом эта деятельность я называю это:

Intent changedIntent=new Intent(); 
    changedLimitIntent.putExtra("changed",changed); 
    changedLimitIntent.putExtra("changedDesc","desc); 

    setResult(Activity.RESULT_OK,changedIntent); 
    finish(); 

В моей деятельности с пользовательским адаптером у меня есть этот код:

@Override 
public void onActivityResult(int requestCode, int resultCode, Intent data) { 
    super.onActivityResult(requestCode, resultCode, data); 
    if (resultCode == RESULT_OK) { 
     if (requestCode == ActivityA.REQUEST_CODE) { 
      .... 
     } else if (requestCode == ActivityB.REQUEST_CODE) { 
      ..... 
     } 
    } 
} 

Это работает нормально для меня, однако, когда я получаю результат от Activity A или Activity B от активности с настраиваемым представлением списка, а когда я нажимаю кнопку «Назад», то, как у меня есть такая активность столько раз, я жду результата от других действий на задней стопке. Я не знаю, в чем проблема. Мне не нравится, что моя деятельность столько раз, что я жду результатов других действий.

Я надеюсь, что с моим вопросом был ясен.

+1

Установите флажок для намерения 'Intent.FLAG_ACTIVITY_CLEAR_TOP' при вызове' Activity'. – Piyush

+0

Intent.FLAG_ACTIVITY_CLEAR_TOP помог мне. – vikifor

+0

Круто! Вы в Android от начала своего развития? – Piyush

ответ

1

Попробуйте это, чтобы начать новую деятельность. Надеюсь, это поможет вам.

Activity_A.this.finish(); 
Intent intentSettings = new Intent(Activity_A.this, Activity_B.class); 
intentSettings.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
startActivity(intentSettings); 
Смежные вопросы