Android:清晰的活动堆栈



我有一个活动:

活动1 ,应该打开一次(首次启动( Activity2 ,主屏幕。在第一次启动时,在 activity1 中做了一些事情后,应打开下一个下一个启动 Activity2 。我有点想出了如何做到这一点,并且它可以很好地工作,但是当我在手机上按"后背"按钮时, activity1 突然出现。

那么我该如何修复呢?我应该清除堆栈还是什么?

这是我的代码:

活动1

public class MainActivity extends AppCompatActivity {
    Button but1;
    EditText input1;
    TextView error1;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.welcome_page);
        if(getName("username")!=null){
            Intent intent = new Intent(MainActivity.this, WelcomePageLast.class);
            startActivity(intent);
        }
        ListenerOnButton();
    }
    public void ListenerOnButton(){
        but1 = (Button)findViewById(R.id.welcome_page_button);
        input1 = (EditText)findViewById(R.id.username_input);
        error1 = (TextView)findViewById(R.id.name_error);
        but1.setOnClickListener(
                new View.OnClickListener() {
                    public void onClick(View view){
                        if (input1.getText().toString().length() < 2){
                            error1.setText("Слишком короткое имя!");
                        }else {
                            error1.setText("");
                            Intent intent = new Intent(MainActivity.this, WelcomePageLast.class);
                            intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK |Intent.FLAG_ACTIVITY_CLEAR_TOP);
                            setName("username", input1.getText().toString());
                            startActivity(intent);
                        }
                    }
                }
        );
    }
    public void setName(String key, String value){
        SharedPreferences preferences = getSharedPreferences("preferences", MODE_PRIVATE);
        SharedPreferences.Editor editor = preferences.edit();
        editor.putString(key, value);
        editor.apply();
    }
    public String getName(String key){
        SharedPreferences preferences = getSharedPreferences("preferences", MODE_PRIVATE);
        return preferences.getString(key, null);
    }
}

活动2

public class WelcomePageLast extends AppCompatActivity {
    TextView greetings;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        SharedPreferences prefs = getSharedPreferences("preferences", MODE_PRIVATE);
        String greeting_message = getString(R.string.greetings_message) + prefs.getString("username", "") + "!";
        super.onCreate(savedInstanceState);
        setContentView(R.layout.welcome_page_last);
        greetings =(TextView)findViewById(R.id.greetings);
        greetings.setText(greeting_message);
    }
}

它不会将您送回最后的activitive

Intent intent = new Intent(MainActivity.this, WelcomePageLast.class);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK |Intent.FLAG_ACTIVITY_CLEAR_TOP);
setName("username", input1.getText().toString());
startActivity(intent);
finish();

intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP)-清除活动堆栈。如果您不想清除活动堆栈。请不要使用该标志。

最新更新