activity_main.xml未在android中加载

时间:2015-09-29 11:08:33

标签: java android

在以下代码中,未使用主xml文件activity_main.xml。如果我想使用它应该修改什么。主要目的是在后台加载webview,同时在前面显示splashscreen。我的方法是否正确?如果我想在显示启动画面时使用AsyncTask加载webview,我该怎么办? 我的应用程序每次都在加载方向时加载。我该怎么办才能解决它?

public class MainActivity extends Activity {
WebView webview;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    setContentView(R.layout.activity_splash);

    webview = new WebView(MainActivity.this);
    webview.getSettings().setJavaScriptEnabled(true);
    webview.getSettings().setLoadsImagesAutomatically(true);
    webview.getSettings().setCacheMode(WebSettings.LOAD_NO_CACHE);
    webview.getSettings().setAppCacheEnabled(false);
    webview.loadUrl("http://www.nricabs.com");
    webview.setWebViewClient(new WebViewClient(){
        public boolean shouldOverrideUrlLoading(WebView view, String url) {

            if(url.startsWith("tel:")) { 
                Intent intent = new Intent(Intent.ACTION_DIAL, Uri.parse(url));
                startActivity(intent); 
                return true;
            }
            return false;

        }
        public void onPageFinished(WebView view,String url){
            super.onPageFinished(view, url);
            setContentView(webview);
        }
    }
            );

}
public boolean onKeyDown(int keyCode, KeyEvent event) {
    if(event.getAction() == KeyEvent.ACTION_DOWN){
        switch(keyCode)
        {
        case KeyEvent.KEYCODE_BACK:
            if(webview.canGoBack()){
                webview.goBack();
            }else{
                finish();
            }
            return true;
        }

    }
    return super.onKeyDown(keyCode, event);
}


}

2 个答案:

答案 0 :(得分:1)

关于你的webview问题,我很确定它已经加载到一个单独的线程上,所以你不需要使用AsyncTask。

关于方向更改的重新加载,您可以通过SavedInstanceState恢复状态,如here所示。

或者,您可以按照here

所示禁用它

关于使用xml布局,只需调用

即可
 setContentView(R.layout.activity_main);

希望这有帮助。

答案 1 :(得分:0)

页面加载完成后,您可以打开新活动的新意图,然后可以使用不同的布局。

另一种方法可能是为主页和进度提供一个布局,然后在页面加载完成后隐藏/显示布局。