Android:清除活动堆栈

时间:2019-07-02 16:05:43

标签: java android android-activity

我有一个活动:

Activity1 ,应该打开一次(首次启动) 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);
    }
}

1 个答案:

答案 0 :(得分:1)

它不会使您回到上一次活动状态

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)-清除活动堆栈。如果您不想清除活动堆栈。请然后不要使用该标志。