【问题标题】:How to not repeat the activities and always continue from where I stand..?如何不重复活动并始终从我的立场继续..?
【发布时间】:2017-01-12 21:49:28
【问题描述】:

我正在创建一个游戏,所以当我按下开始按钮时,从 (A1.class) 开始,所以如果用户完成此任务,他将意图 (Result activity) 如果他按下转到 ( A2.class 等等...)当应用程序重新启动并且用户按下开始按钮从 A2 或 A3 继续时我想要什么,并且结果活动中的下一个按钮同样的事情我不想要 A1 出现(或者 A2 如果他在A3任务)

主活动

start.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            //here I want to countiue the counting and not start from the first
            // let say i'm at A2 i want to go to A3
            Intent intent = new Intent(MainActivity.this , A1.class);
            startActivity(intent);
        }
    });

结果活动

 btn.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            //here I want to intent to the new activity A3,A4 etc...
        }
    });
}

开始按钮从我原来的位置继续

下一个按钮意图进入我所在的下一个 Activity

【问题讨论】:

  • 您不想在 ResultActivity 中执行此操作? Intent intent = new Intent(ResultActivity.this , A2.class); startActivity(intent); finish(); 不要忘记使用 finish() 来防止用户回到以前的活动
  • 当我再次启动应用程序时,我想继续说 (a6) 如果我回答 a6 任务我转到 resultactivity 然后按下一步按钮进入 a7 活动
  • 如果我在 a6 之后关闭应用并重新打开它,我会从 a7 开始 ...!

标签: android android-intent


【解决方案1】:

如果您知道您的Activities(例如他们的名字),您可以在SharedPref 中存储String,只要调用onDestroy() 的活动(= 用户退出应用程序)。这个String 会在它被销毁之前告诉你它是哪个Activity

在应用启动(重新启动)时,检查您的SharedPrefs 并执行switch 语句以确定Activites 中的哪一个是最后一个。请先阅读关于SharedPrefs 的内容,以免我复制太多代码 - 一切都很好解释:

  • Reading and Saving items in SharedPrefs

    start.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            //here I want to countiue the counting and not start from the first
            // let say i'm at A2 i want to go to A3
            Intent intent;
            SharedPreferences sharedPref = getActivity().getPreferences(Context.MODE_PRIVATE);
    
        // Here I get the activityName, which was stored onDestroy();
        String activityName = sharedPref.getString("key", "defaultValue");
    
        switch(activityName) {
            case "A1":
                intent = new Intent(MainActivity.this , A1.class);
                startActivity(intent);
            break;
            case "A2":
                intent = new Intent(MainActivity.this , A2.class);
                startActivity(intent);
            break;
        }
    
    }});
    

NextActivity 的另一种方法是定义一个带有 Activity 名称的字符串数组。

String[] activitiesArray = new String[numberOfActivites];

现在onDestroy(),您保存了哪个活动被销毁,并且您知道array 中该Activity 的索引,因此您还可以将ActivityIndex 存储在您的数组中。

当您需要您的NextActivity 启动时,只需调用检索ActivityIndex 并将其增加+1..这应该给您NextActivity

【讨论】:

  • 我知道 sharedPreference,但是结果活动中的下一个按钮呢?它将如何知道我在 A6 上转到 A7
  • 应该是一样的。如果您有想要去哪个活动的信息(因为它在 SharedPrefs 中),那么下一个按钮应该知道去哪里,因为您向它提供了信息。否则,请再次检查您是如何实现下一个按钮的,如果这没有足够的信息。
  • @EasyE 使用Extras 并将值传递给它来自哪个活动的结果活动
  • +1 for Roljhon .. 也不要忘记您作为开发人员知道您拥有的活动的顺序.. 所以如果您有关于 X 活动的信息..那么您知道哪个是 X+1 和您还可以创建一些表/ArrayMap 来查找 X+1 的值(下一个活动,基于 X 是当前的)。
  • 你能检查我的编辑 sharedpreference 我是否应该在每个 A1,A2 中添加它,...?
猜你喜欢
  • 2019-07-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-08-10
  • 2023-04-09
  • 1970-01-01
相关资源
最近更新 更多