在Activity中设置savedInstanceState Bundle

时间:2016-10-24 12:36:13

标签: android android-savedstate

有没有办法手动设置savedInstanceState Bundle?

我需要在savedInstanceState模式下启动一个活动,在onCreate中,savedInstanceState Bundle不会为null。我的观点是使用我的自定义数据恢复活动。谢谢

1 个答案:

答案 0 :(得分:1)

这将使您的代码在将来难以理解且难以维护。此外,您将反对该平台的架构。

正确的方法是在启动Activity的Intent中发送数据,或者如果bundle为null,则获取onCreate中的所有数据,如下所示:

if(savedInstanceState == null)
    //Get data from db, resources etc.
else 
    //Do the restoring using the bundle, 
    //or just let it pass here and handle it in      
    //`onRestoreInstanceState`, both are correct

请不要试图找到修复方法只是因为正确的方式需要花费更多时间。它将在未来得到回报! : - )

作为旁注,请记住,Intent Activity开始<html> <head> <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script> <script> $(function() { $('.info').hide(); $('#countryList').on('change', function() { $('.info').hide(); var countryCode = $('#countryList').val(); $('.info.' + countryCode).show(); }); }); </script> </head> <body> <select id="countryList"> <option value="">[Select Country]</option> <option value="DK">Denmark</option> <option value="DE">Germany</option> <option value="SE">Sweden</option> <option value="RO">Romania</option> <option value="UK">United Kingdom</option> </select> <div class="info DK">Copenhagen is the capital of Denmark.</div> <div class="info DE">Berlin is the capital of Germany.</div> <div class="info SE">Stockholm is the capital of Sweden.</div> <div class="info RO">Bucharest is the capital of Romania.</div> <div class="info UK">Londaon is the capital of the United Kingdom.</div> </body> </html> 不应该包含大块数据,因为对于一次在组件之间传输的数据存在1mb的跨进程限制。