Android:清除活动堆栈

我有一个活动:


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();

    }


www说
浏览 87回答 1
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)- 清除活动堆栈。如果您不想清除活动堆栈。请不要使用那个标志。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java