0

문제 :ActionBarSherlock의 뒤로 버튼과 스마트 폰 뒤로 버튼

나는 내가 두 번째 활동에 스마트 폰과 액션 바 중 하나에서 버튼을 다시 누르면 콜백 할 주요 활동이있다. 하지만 항상 충돌합니다. 그냥 마무리()를하면 작동합니다. 주요 활동에서,하지만 그렇게하면 스마트 폰에서 뒤로 버튼이 제대로 작동하지 않습니다.

MainActivity :

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(); 
       } 
      }); 
     } 

SecondActicity :) (

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; 
    } 
} 

이미 많은 방법을 시도하고 아무도는 마무리, 작동하지 않습니다;

답변

2

두 번째 활동에서 의도 및 startActivity 항목을 삭제하십시오. 만 필요

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

마무리()는 사용자가 뒤로 버튼을 눌러 다시 연락 할 새로운 활동을 시작할 때 이렇게 사용하지 않는 백 스택에서 해당 활동을 제거합니다.

+0

답변을 주셔서 감사합니다. – Marckaraujo

1

주 활동을 SecondActivity에서 다시 시작하지 않으려면 두 번째 활동을 완료하고 이전 활동으로 되돌리려면됩니다. 단지 finish()

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

-SecondActivity에 다음 코드를 교체하십시오.

+0

감사합니다. 이제 작동합니다. – Marckaraujo