【问题标题】:how can save current state of activity and reload that in any time如何保存当前的活动状态并随时重新加载
【发布时间】:2016-11-28 10:11:04
【问题描述】:

有 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:

 <Button
        android:text="resume"
        android:layout_width="wrap_content"
        android:id="@+id/btn1"
        android:layout_height="wrap_content" />

    <Button
        android:text="next"
        android:id="@+id/btn2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />

活动 p1:

public class p1 extends AppCompatActivity {

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

        Button button = (Button) findViewById(R.id.btne);
        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent=new Intent(p1.this,p2.class);
                startActivity(intent);
            }
        });

        Button button1=(Button)findViewById(R.id.btne2);
        button1.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent=new Intent(p1.this,MainActivity.class);
                startActivity(intent);
            }
        });

        }
    }

xml:

 <Button
        android:text="next"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/btne"/>

    <Button
        android:text="go in main"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/btne2"/>

和 p2,p3 像 p1 。如果有人可以请帮忙

【问题讨论】:

  • 您需要重新表述问题。即使有人想帮助他也不能,因为没有人能理解你打算做什么
  • 当你启动一个新的Activity时,它会被添加到堆栈中,所以当用户点击返回按钮或者你调用finish();时,他会回到之前的Activity。
  • 如果可能的话,你想要的东西的图片表示会很棒并且很容易理解
  • 例如:如果我在 p2 并单击 go to main 。然后当在 p2 中单击 main 中的 resume 时
  • 你能说出你想要做什么的确切目的吗?我想使用片段可以更好地帮助你。但我仍然想知道这个流程的目的。

标签: java android android-studio android-intent android-activity


【解决方案1】:

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

public static Intent resumeIntent = null;

当你点击 Resume 按钮(在 MainActivity 中)它应该转到上一个活动,实现点击事件如下:

        if (resumeIntent != null) {
            startActivity(resumeIntent);
        } else {
            Toast.makeText(MainActivity.this, "No Intent to resume !", Toast.LENGTH_SHORT).show();
        }

在 P1、P2 和 P3 活动中,Go To Main 按钮的代码如下:

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

希望对你有帮助!

【讨论】:

    【解决方案2】:

    如果您的主要活动开始了所有其余的活动,那么您只需致电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);
    

    【讨论】:

    • 例如:如果我在 p2 并单击 go to main 。然后当在 p2 中单击 main 中的 resume 时
    • 想要如果我在活动 p2 中然后点击进入主。当我在 main 然后点击 resume 。我进入活动 p2 。就像游戏有铺垫和恢复...
    • @erfan,所以你只想隐藏 p2 - 而不是关闭它?如果这是真的,那么当用户在打开 p2 之前按下 PLAY 按钮关闭 Main,然后当用户按下 PAUSE - 使用 startActivity 打开 Main。当用户在 Main 中按下 RESUME 时,在 Main 中调用 finish() - 在这种情况下,您的 PLAY 按钮必须更改为 RESUME。还有其他方法,你可以打开两个Main activity,第一个显示PLAY按钮,恢复游戏的版本显示RESUME按钮。
    猜你喜欢
    • 2011-01-09
    • 2014-03-09
    • 1970-01-01
    • 1970-01-01
    • 2023-01-25
    • 1970-01-01
    • 2013-09-07
    • 2017-05-18
    • 1970-01-01
    相关资源
    最近更新 更多