문제

활동 A와 B간에 사용자 데이터를 유지 해야하는 마법사 스타일 응용 프로그램을 작성합니다. A는 다음 소프트 버튼을 가지고 있고 B는 다시 소프트 버튼이 있습니다.

FLAG_ACTIVITY_REORDER_TO_FRONT를 사용할 때는 각 활동이 재사용되기 때문에 소프트 버튼이 사용될 때 사용자 데이터를 유지할 수 있습니다.

그러나 사용자가 B, B에서 B 백 하드 버튼을 누르면 하드 버튼이 마무리 ()를 암시 적으로 사용합니다.

그런 다음 BeNeraCodiceTag 코드를 B에서 무시하고 Back Soft 버튼이 이전 버튼과 똑같이 동작 할 것으로 생각합니다.

이제 B에서 A로 돌아가는 하드 키를 사용하면 모든 것이 좋습니다. 이 시점에서 A에 초점을 맞춘 경우 사용자가 백 하드 버튼을 다시 누르면 기대되는 동작이 응용 프로그램이 나오는 것입니다.

B가 아직 살아 있음을 주면 예상되는 행동이 발생하지 않는 문제가 발생하지 않는다는 것입니다. 그래서 B에서 overriden onBackPressed가 여전히 듣고 있고, 대신 다른 행동은 ocurr입니다.

어떻게 해당 응용 프로그램에 초점이 나올 때

를 왼쪽으로 듣는 방법을 어떻게 수행 할 수 있습니까?

미리 감사드립니다.

도움이 되었습니까?

해결책 2

자연스러운 안드로이드 솔루션으로 제 문제를 해결할 수 있습니다 :

Krylez 팁을 따르면 Flag_activity_reorder_to_front를 사용하여 중지되었으므로 더 이상 하드 버튼과 충돌하지 않고 이제는 마법사를 시작하는 의도를 재활용합니다.

a, 사용자가 계속 소프트 버튼을 눌러 B를 누르면 호출되는 매우 일반적인 방법이 있습니다. 활동 A는 유익한 것입니다. 따라서 사용자의 데이터를 사용자의 데이터로 넣을 필요가 없습니다. b, 다음과 같이 :

    /** Called when the user presses the Continue button*/
public void continueButtonOnClick(View view) {

        Intent intent = this.getIntent();
        intent.setClass(this, StepOneRegisterWizardActivity.class);
        startActivity(intent);
}
.

활동 B가 시작되면 항상 사용자의 데이터가 있는지 사용자의 데이터가 있는지 여부를 추구해야합니다.

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

    // Get the components of the content layout
    usernameEditText = (EditText)findViewById(R.id.usernameEditText);
    passwordEditText = (EditText)findViewById(R.id.passwordEditText);

    getIntentExtras();
}

private void getIntentExtras() {
    Intent intent = this.getIntent();

    Bundle bundle = intent.getExtras();
    if (bundle != null) {
        usernameEditText.setText(bundle.getCharSequence("usernameEditText"));
        passwordEditText.setText(bundle.getCharSequence("passwordEditText"));
    }
}
.

이제 B에서 아마도 사용자가 사용 가능한 뒤로 버튼을 누르면 (소프트 또는 하드) A를 누릅니다.이 경우 사용자의 데이터를 다음과 같이 의도의 엑스트라에 넣어야합니다.

    /** Called when the user presses the Back soft button*/
public void backButtonOnClick(View view) {
    onBackPressed();
}

@Override
/** Called when the user presses the Back hard button*/
public void onBackPressed() {
    finish();

    Intent intent = this.getIntent();
    intent.setClass(this, StepZeroRegisterWizardActivity.class);
    intent.putExtra("usernameEditText", usernameEditText.getText());
    intent.putExtra("passwordEditText", passwordEditText.getText());
    startActivity(intent);
}
.

마지막으로, 사용자가 계속 소프트 버튼을 다시 누르면 새로운 활동 B는 사용자가 LAS 시간을 입력 한 데이터를 가질 것입니다.

그것은 누군가를 돕기를 바랍니다.

다른 팁

Krylez의 코멘트로하는 것을 고려하십시오.또는 파편을 사용하고 싶을 수 있습니다.3.x보다 오래된 SDK를 대상으로하는 경우 지원 라이브러리 .

마법사 스타일을 사용하는 SDK 폴더 안에 샘플 프로젝트가 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top