Android中StartActivity跳转ItemInfoActivity后显示空白页问题
问题分析与解决:启动Activity后空白且日志不输出
问题场景
AndroidManifest.xml中配置的Activity代码:
<activity android:name=".MainActivity" android:exported="true"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> <meta-data android:name="android.app.lib_name" android:value="" /> </activity> <activity android:name=".ItemInfoActivity"> </activity>
Fragment中启动ItemInfoActivity的代码:
val intent = Intent(requireContext(),ItemInfoActivity::class.java) Log.d("ItemLookupFragment","itemId = $itemId") startActivity(intent)
ItemInfoActivity的实现代码:
class ItemInfoActivity: AppCompatActivity() { private lateinit var binding : ActivityItemInfoBinding override fun onCreate(savedInstanceState: Bundle?, persistentState: PersistableBundle?) { Log.d("ItemInfoActivity","onCreate") super.onCreate(savedInstanceState, persistentState) binding = ActivityItemInfoBinding.inflate(layoutInflater) setContentView(binding.root) setSupportActionBar(binding.toolbar) } }
点击按钮后跳转至空白页面,Fragment日志正常打印,Profiler显示当前运行的是ItemInfoActivity,但Activity内日志未输出,仅出现Expecting binder but got null!日志。
问题原因
你重写了错误的onCreate重载方法。系统启动Activity时默认调用的是仅接收Bundle?参数的onCreate方法,而你实现的是带PersistableBundle?参数的重载版本,这个方法不会被普通启动流程触发,因此Activity的初始化代码(绑定布局、打印日志等)完全没有执行,导致页面空白且无日志输出。
修复方案
将ItemInfoActivity的onCreate替换为标准的单参数版本:
class ItemInfoActivity: AppCompatActivity() { private lateinit var binding : ActivityItemInfoBinding override fun onCreate(savedInstanceState: Bundle?) { Log.d("ItemInfoActivity","onCreate") super.onCreate(savedInstanceState) binding = ActivityItemInfoBinding.inflate(layoutInflater) setContentView(binding.root) setSupportActionBar(binding.toolbar) } }
额外说明
带PersistableBundle的onCreate重载需要在Manifest中给Activity配置android:persistableMode="persistAcrossReboots",且仅在系统重启后恢复Activity的特定场景下才会被调用,普通启动Activity时不会触发该方法。
内容的提问来源于stack exchange,提问作者MinhCnd
相关产品推荐
相关产品推荐

