Java 如何保存活动的当前状态并随时重新加载

Java 如何保存活动的当前状态并随时重新加载,java,android,android-studio,android-intent,android-activity,Java,Android,Android Studio,Android Intent,Android Activity,有4个名称为的活动:main、p1、p2、p3 如果用户在p1或p2或p3时想退出按钮并在主活动中再次重新启动应用程序,则可以使用恢复按钮转到相同的活动。 这是我的代码:主要活动: public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInsta

有4个名称为的活动:main、p1、p2、p3 如果用户在p1或p2或p3时想退出按钮并在主活动中再次重新启动应用程序,则可以使用恢复按钮转到相同的活动。 这是我的代码:主要活动:

public class MainActivity extends AppCompatActivity {

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


        Button button2=(Button)findViewById(R.id.btn2);



      button2.setOnClickListener(new View.OnClickListener() {
          @Override
          public void onClick(View v) {
              Intent intent=new Intent(MainActivity.this,p1.class);
              startActivity(intent);
          }
      });
    }
}
xml:

xml:



p2,p3与p1相似。如果有人可以

请提供帮助如果您的主要活动开始了所有剩余的活动,那么您只需要调用
finish()来完成它们,您的主要活动将返回顶部。因此,与p1中的示例不同:

Intent intent=new Intent(p1.this,MainActivity.class);
startActivity(intent);
写:

p1.this.finish();
另一方面,如果您希望关闭所有打开的活动,直到您的主活动(即,您有MainActivity->p1->p2,并且您希望只剩下MainActivity,p1和p2已完成),则使用以下代码:

Intent intent = new Intent(getApplicationContext(), MainActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intent);

在MainActivity中,声明一个全局变量resumeIntent:

public static Intent resumeIntent = null;
当您单击“继续”按钮(在MainActivity中)时,它应转到上一个活动,执行单击事件,如下所示:

        if (resumeIntent != null) {
            startActivity(resumeIntent);
        } else {
            Toast.makeText(MainActivity.this, "No Intent to resume !", Toast.LENGTH_SHORT).show();
        }
在这些活动P1、P2和P3中,转到主按钮的代码如下所示:

btnGoToMain.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                MainActivity.resumeIntent = getIntent();
                finish();
            }
        });

希望有帮助

你需要重新措辞这个问题。即使有人想帮助他,他也不能,因为当你们开始新的活动时,并没有人能理解你们打算做什么,它被添加到堆栈中,所以当用户点击后退按钮或你们调用
finish()他将返回到上一个活动。如果可能的话,你想要的图形表示将非常好,并且可以很容易地理解示例:如果我在p2中,请单击“转到主屏幕”。那么,当你点击主页上的“恢复”按钮时,你能告诉我你想做什么的确切目的吗?我想使用碎片可以更好地帮助你。但我仍然想知道这个流的用途。例如:如果我在p2中,单击go to main。然后,当我在活动p2中时,单击主go in p2want中的resume,然后单击go to main。当我在main中时,单击resume。我参加活动p2。就像游戏有ply和resume…@erfan,所以你只想隐藏p2,而不想关闭它?若这是真的,那个么当用户在打开p2之前按下PLAY按钮close Main,然后当用户使用startActivity按下PAUSE-open Main时。当用户在Main中按下RESUME时,在Main中调用finish()——在这种情况下,您的播放按钮必须更改为RESUME。还有其他的方法,你可以打开两个主要的活动,第一个会显示PLAY按钮,恢复游戏的版本会显示RESUME按钮。
public static Intent resumeIntent = null;
        if (resumeIntent != null) {
            startActivity(resumeIntent);
        } else {
            Toast.makeText(MainActivity.this, "No Intent to resume !", Toast.LENGTH_SHORT).show();
        }
btnGoToMain.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                MainActivity.resumeIntent = getIntent();
                finish();
            }
        });