Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/185.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android应用程序生命周期上下颠倒_Android_Android Activity_Backup_Task_Instance - Fatal编程技术网

Android应用程序生命周期上下颠倒

Android应用程序生命周期上下颠倒,android,android-activity,backup,task,instance,Android,Android Activity,Backup,Task,Instance,我有一个程序有一些正常的行为,但我仍然不知道我做错了什么 活动A调用-->活动B 我将字符串/整数从一个活动传递到另一个活动(Intent.putExtra()) 我已将我的活动声明为单个实例,并在清单中声明了谁是谁的家长,但当我打开其他应用程序,然后返回到我的应用程序时,我所在的活动是唯一还活着的活动。 如果我删除了“singleInstance”,那么我的导航可以工作,但是从intent(以前的活动)接收字符串的导航会崩溃 我希望能够: 当我在应用程序中时,在我的活动中向上/向后导航 如果

我有一个程序有一些正常的行为,但我仍然不知道我做错了什么

活动A调用-->活动B 我将字符串/整数从一个活动传递到另一个活动(Intent.putExtra()) 我已将我的活动声明为单个实例,并在清单中声明了谁是谁的家长,但当我打开其他应用程序,然后返回到我的应用程序时,我所在的活动是唯一还活着的活动。 如果我删除了“singleInstance”,那么我的导航可以工作,但是从intent(以前的活动)接收字符串的导航会崩溃

我希望能够:

  • 当我在应用程序中时,在我的活动中向上/向后导航
  • 如果我离开应用程序并返回,仍然可以在应用程序中向上/向后导航
考虑到我在活动之间传递值的意图。putExtra(“键”、“值”)

我认为这一切都与备份/备份导航和android:launchMode=[“multiple”|“singleTop”|“singleTask”|“singleInstance”]有关,但我找不到完美的解决方案

更新: A-->B-->C A->B:A额外;B额外收费 B->C:B额外放置;额外的

如果我转到C,离开应用程序,然后返回到应用程序,应用程序位于C,如果我尝试导航到B,它会崩溃,因为我没有额外功能,活动已终止。 最好的行为是什么?让它们开着?重新创建它们?

“向上”按钮将带您进入同一应用程序中的上一个分层活动。
“后退”按钮会将您带到手机所在的上一屏幕/应用程序/活动,无论它属于哪个应用程序。

如果我了解您必须在第二个活动示例中设置字符串数据的条件:

if(intent != null){
yourString = intent.getStringExtra("count");
}
然后您必须提供保存实例,如

protected void onSaveInstanceState(Bundle outState) {
    super.onSaveInstanceState(outState);
    outState.putString("count", yourString);//or int or other look on developers
  }
并从实例中恢复

protected void onRestoreInstanceState(Bundle savedInstanceState) {
    super.onRestoreInstanceState(savedInstanceState);
    yourString = savedInstanceState.getString("count");
  }

您试图实现的行为是Android上的默认行为。所以我相信在你的问题上,少就是多

AndroidManifest.xml

  • 从中删除所有
    parentActivityName
    。这真的一点也不重要
  • 删除所有
    launchMode
    这些特定的边缘案例,除非您有特定的原因和非默认行为,否则不要使用它们
intent
您传递给活动的参数不要被这些清单细节搞得一团糟,我认为它们与您的问题无关。在任何活动中,无论您退出和进入应用程序多少次,您都应该能够调用
getIntent().getExtras()
并访问传递给它的任何参数

onSaveInstanceState
onRestoreInstanceState
期间,不需要保存/恢复意图参数。这些回调针对的是当前状态,而不是传递给它的参数。这些是不同的事情

  • back
    :自动执行。不能
    finish()调用下一个活动时的上一个活动
  • up
    :只需覆盖
    onOptionsItemSelected

    @凌驾 公共布尔值onOptionsItemSelected(菜单项项){ 开关(item.getItemId()){ //响应操作栏的“向上/主页”按钮 案例android.R.id.home: finish();//将显示此结束和上一个结束。 回来 //其他菜单项? } }

如果我尝试导航到B,它会崩溃,因为我没有 临时演员和活动已终止。什么是最好的 行为让它们开着?重现它们

不要在没有提供stacktrace和stacktrace周围的代码行的情况下在StackOverflow上说“它崩溃了”。这是我投反对票的主要原因之一


如果它崩溃了,询问一下崩溃的情况,不要搞乱自动默认导航“尝试修复它”

你为什么不关注什么崩溃,而不是通过更改意图标志来“修复”它?因为我的工作方式不允许我在退出应用程序并返回后在应用程序中导航,这意味着即使不坏也有问题。这看起来好多了。我试试看。下次可以。你们的解决方案实际上很有效,删除了所有内容,我只需按“后退”按钮即可。现在,我想知道应用程序中的导航是否正确。我的意思是,用户要想得到更高的价格,你就得按回去吗?