我正在努力了解当用户按下后我在引擎盖下发生的事情并没有覆盖onOptionsItemSelected
。
我有以下情况:
intent.putExtra("abc", "abc");
getIntent()
onCreate()
的活动B.
当用户点击活动C时会发生什么?
如果我没有覆盖后退按钮,按下后退将在getIntent行上产生nullException。为什么?它位于onCreate()
而不是onStart()
。
如果我使用onSaveInstanceState
,则捆绑包始终为空。这导致我假设back正在创建Activity的新实例。为什么?它应该完成自己。
如果我用finish()
覆盖后退按钮,它就不会再崩溃,但我认为后面的默认行为是finish()
。
编辑更详细信息:
我在每个生命周期方法中都举杯祝酒,我发现Activity B调用之后我按回活动C.这对我没有意义!
清单:
活动A
<activity
android:name=".activities.MainActivity"
android:configChanges="orientation"
android:screenOrientation="portrait"
android:label="@string/app_name">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
活动B
<activity
android:name=".activities.MenuActivity"
android:configChanges="orientation"
android:screenOrientation="portrait"
android:label="@string/menu_title"
android:parentActivityName=".activities.MainActivity">
</activity>
活动C
<activity
android:name=".activities.OptionActivity"
android:configChanges="orientation"
android:screenOrientation="portrait"
android:label="@string/option_title"
android:parentActivityName=".activities.MenuActivity">
</activity>
答案 0 :(得分:1)
当我点击活动C时,为什么活动B会被销毁?
您是否在开始活动前使用intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
表示意图。它将清除backstack
,当您按下时,将重新创建活动。
<强>更新强>
不要依赖onDestroy()
的电话,因为它可能会在按下后按钮上调用,也可能不会调用。
但是,保证在调用finish()
时调用它,但在按下后按钮时肯定不会调用它。