1

ホーム画面とログイン画面があります。ホーム画面で、ログイン画面を呼び出します。

問題は、ログインしてホームに戻ったときです。アプリケーションはonDestroyofHomeを呼び出し、閉じます。

コードは次のとおりです。

public class Home extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.home);

        final ImageView login_username_btn = (ImageView) findViewById(R.id.login_username_btn);

        login_username_btn.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent = new Intent(getApplicationContext(), Login.class);
                startActivity(intent);
            }
        });
    }

}


public class Login extends Activity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        this.getWindow().setSoftInputMode(
                WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);
        setContentView(R.layout.login);

        final EditText etUsuario = (EditText) findViewById(R.id.txtUsuario);
        final EditText etSenha = (EditText) findViewById(R.id.txtSenha);
        final ImageView ivVoltar = (ImageView) findViewById(R.id.voltarBtn);

        ivVoltar.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {
                InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
                imm.hideSoftInputFromWindow(findViewById(android.R.id.content)
                    .getWindowToken(), 0);

                finish();
            }
        });


    @Override
    protected void onPause() {
        super.onPause();

        InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
        imm.hideSoftInputFromWindow(findViewById(android.R.id.content)
            .getWindowToken(), 0);
    }
}


And on LogCat shows "GC_EXTERNAL_ALLOC freed" and "GC_EXPLICIT freed" messages.
4

1 に答える 1

0

呼び出しているホームに戻るにはfinish();、アクティビティが破棄されます(アクティビティの終了はすでにonClose()の後にあります)。

ここに画像の説明を入力してください

その代わりに、HomeActivityへのインテントを作成します。それで問題は解決します。

startActivity(new Intent(getBaseContext(), HomeActivity.class);

または

@Override
public void onBackPressed() 
{
    super.onBackPressed();
}

ivVoltar.setOnClickListener(new OnClickListener() {
        @Override
        public void onClick(View v) {
            InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
            imm.hideSoftInputFromWindow(findViewById(android.R.id.content)
                .getWindowToken(), 0);

            onBackPressed();
        }
    });
于 2012-12-07T12:23:06.687 に答える