0

問題:

2番目のアクティビティでスマートフォンとアクションバーのいずれかから戻るボタンを押したときにコールバックしたいメインアクティビティがあります。しかし、それは常にクラッシュします。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(); のみです。

4

2 に答える 2

2

2 番目のアクティビティでは、インテントと startActivity のものを削除するだけです。必要なもの:

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

finish() はそのアクティビティをバックスタックから削除するため、ユーザーが戻るボタンを押して戻る新しいアクティビティを開始するときに使用しないでください。

于 2012-12-19T15:24:36.117 に答える
1

プリンシパル アクティビティを から再開するのではなくSecondActivity、2 番目のアクティビティを終了して前のアクティビティに戻りたいだけです。SecondActivity--の次のコードを置き換えてみてください。

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

だけでfinish()

于 2012-12-19T15:26:28.657 に答える