Кнопка возврата Actionbarsherlock и кнопка возврата смартфона

Проблема:

У меня есть основное действие, которое я хочу вызвать, когда я нажимаю кнопку «Назад» со смартфона и панели действий на втором действии. Но он всегда падает, он просто работает, когда я кладу Finish(); в основном действии, но если я это сделаю, кнопка «Назад» на смартфоне не работает должным образом.

Основная активность:

public class Principal extends SherlockActivity {

    public static int THEME = R.style.Theme_Sherlock;
    private Button entrar;
    private Button cadastrar;

        @Override
        protected void onCreate(Bundle savedInstanceState) {
            //setTheme(Principal.THEME); //Used for theme switching in samples
            super.onCreate(savedInstanceState);
            setContentView(R.layout.home);

            entrar = (Button)findViewById(R.id.entrar); 
            entrar.setOnClickListener(new View.OnClickListener()
            {
                public void onClick(View v)
                {


                    startActivity(new Intent(Principal.this,LoginActivity.class)); 
                    finish();
                }
            });
            cadastrar = (Button)findViewById(R.id.cadastrar_home); 
            cadastrar.setOnClickListener(new View.OnClickListener()
            {
                public void onClick(View v)
                {


                    Intent intent = new Intent(Principal.this, RegisterActivity.class);
                    startActivity(intent);
                    //finish();
                }
            });
        }

Вторая активность:

public class RegisterActivity extends SherlockActivity{

    protected void onCreate(Bundle savedInstanceState) {
        setTheme(Principal.THEME); //Used for theme switching in samples
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_register);
        getSupportActionBar().setDisplayHomeAsUpEnabled(true);
    }

    public boolean onOptionsItemSelected(MenuItem item) {
        switch (item.getItemId()) 
        {

        case android.R.id.home:
             // Do whatever you want, e.g. finish()
            Intent intent = new Intent(this, Principal.class);
            intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
            startActivity(intent);
             break;

          }
        return true;
    }
}

Уже пробовал много способов, и ни один не работает, только с finish();


person Marckaraujo    schedule 19.12.2012    source источник


Ответы (2)


Во втором действии просто удалите свое намерение и материал startActivity. Только нужно:

case android.R.id.home:
    finish();
break;

Finish() удалит это действие из заднего стека, поэтому не используйте его при запуске нового действия, к которому вы хотите, чтобы пользователь вернулся, нажав кнопку "Назад".

person Mattias Isegran Bergander    schedule 19.12.2012
comment
Спасибо, за ответ тоже. - person Marckaraujo; 19.12.2012

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

Intent intent = new Intent(this, Principal.class);
            intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
            startActivity(intent);

только с finish().

person iagreen    schedule 19.12.2012