1

我正在开发一个 android 应用程序,并且我正在处理我的 android 应用程序内的一个 webview。我有两个布局,主要是在 layout 文件夹中找到的 activitymain.xml 和在 layout-land 文件夹中找到的另一个名为 activitymain.xml 的布局,我从 1 个 java 文件中加载这两个但我需要这两个来加载两个不同的 webview 一个用于横向和一个对于 Portrait.my 的问题是是否可以直接将我的 webview 的 url/文件路径放在 xml 中,以便当用户更改方向和 layout-land 加载中的 activitymain.xml 时,他加载横向的 webview 而不是 webview是纵向xml吗?

更新:

我能够以我自己的方式运行它 问题是它从一开始就再次加载,这是一个愚蠢的错误,当发生更改时我没有考虑到应用程序加载一个新页面,这是从一开始的计划,但问题是更改丢失之前用户的数据,因此我认为我所拥有的解决方案不是解决方案,而是一个问题,您能否建议我如何在不丢失数据的情况下更改方向并继续最后的位置发生变化的页面不再从头开始?

4

1 回答 1

0

我认为他正在尝试找到某种方法来直接在 xml 文件中设置 url,而无需在 Activity 中运行方法 loadUrl。喜欢:<Webview android:url="@string/my_url" />

但我不认为这是可能的。参见官方文档处理运行时更改

更改它实际上会创建一个新视图。

相反,您可以以编程方式执行此操作:

在你的onCreate方法代码中是这样的

@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        /*getResources().getConfiguration().ORIENTATION_PORTRAIT;*/
        webview = (WebView)findViewById(R.id.webView1);
        webview.getSettings().setJavaScriptEnabled(true);
         webview.setWebViewClient(new WebViewClient()
            {
                public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) {
                    Toast.makeText(getApplicationContext(), description, Toast.LENGTH_SHORT).show();
                }
            });
        webview.loadUrl("http://www.facebook.com");

    }

此外,您可以通过以下方式检查方向变化:

@Override
    public void onConfigurationChanged(Configuration newConfig) {
        super.onConfigurationChanged(newConfig);

        // Checks the orientation of the screen
        if (newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE) {
            webview.loadUrl("http://www.google.com");
            Toast.makeText(getApplicationContext(), "landscape", Toast.LENGTH_SHORT).show();
        } else if (newConfig.orientation == Configuration.ORIENTATION_PORTRAIT){
            webview.loadUrl("http://www.stackoverflow.com");
            Toast.makeText(getApplicationContext(), "portrait", Toast.LENGTH_SHORT).show();
        }
    }

把它放在你的manifest.xml <activity>

android:configChanges="orientation|screenSize"

希望这对你有用。对我来说很好。

编辑:

不要忘记给 Internet 权限,否则它不会运行

<uses-permission android:name="android.permission.INTERNET"/>

否则,如果有任何问题,请告诉我。

谢谢你。

于 2013-11-15T08:32:48.910 回答