在Android

时间:2017-05-16 12:59:28

标签: android android-activity

我的应用程序中有两个活动,一个是MainActivity,它扩展自CordovaActivity和其他从MainActivity扩展的ConsoleActivity。我有一些对象,我用它来初始化ConsoleActivity initWebView()。这是代码: MainActivity:

public abstract class MainActivity extends CordovaActivity {
@Override
public void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
    super.init();

   WebView view = (WebView) appView.getEngine().getView();
    view.setWebViewClient(new SSLAcceptingWebViewClient(appView));
     if (savedInstanceState == null) {
        view.clearCache(false);
        initWebView(); 
     }
     ...

ConsoleActivity:

public class ConsoleActivity extends MainActivity {
  @Override
  protected void initWebView() {
    settingManger =new SettingManager(ConsoleActivity.this);
    Util mJSUtil = new Util(this, appView);

((WebView)appView.getEngine()。getView())。addJavascriptInterface(mJSUtil,“JSUtil”);         super.loadUrl( “文件:///android_asset/www/start.html”);     }

@Override
public void onCreate(Bundle savedInstanceState) {
..
}

因此,当我启动我的应用程序时,工作正常。但是有些时候(我的观察)当android杀死这个活动并且它再次重新创建时,savedInstanceState不为null,这样我就无法调用initWebView并且设置Manger对象和Util没有正确创建,当我稍后尝试在ConsoleActivity中使用它们时例外:

java.lang.RuntimeException: Unable to start activity ComponentInfo{com.myhome.myapp/com.myhome.myaoo.activity.ConsoleActivity}: java.lang.NullPointerException: Attempt to invoke virtual method 'void com.myapp.util.SettingsManager.getlog()' on a null object reference

有没有解决方法呢?

1 个答案:

答案 0 :(得分:0)

理想情况下,您应该使用savedInstance中的详细信息并重新创建活动。但是如果你想忽略ConsoleActivity中的savedInstance,你可以尝试在ConsoleActivity中覆盖onCreate,并根据传递给它的savedInstance调用initWebView();