我有一个活动:
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);
}
}
答案 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)
-清除活动堆栈。如果您不想清除活动堆栈。请然后不要使用该标志。