我正在开发一个Android应用程序,即时通讯处理我的Android应用程序内的webview。我有两个布局,主要是在layout文件夹中找到的activitymain.xml和另一个在layout-land文件夹中找到的名为activitymain.xml的布局,我从1个java文件加载这两个但是我需要这两个加载两个不同的webview一个用于横向和一个对于portrait.my问题是可以直接将我的webview的url /文件路径放在xml中,这样当用户在layout-land load中更改方向和activitymain.xml时,他会加载webview for landscape而不是webview在肖像xml?
更新:
我能够以我自己的方式运行它问题是它从一开始就再次加载这是一个愚蠢的错误我没有考虑到更改发生时应用程序加载一个新页面,这是从那个开始的计划但问题是用户在更改丢失之前的数据,因此我认为我所拥有的解决方案不是一个解决方案而是一个问题,你可以告诉我如何在没有数据丢失的情况下进行方向更改并继续在最后一页发生的变化不是从头开始的?
答案 0 :(得分:0)
我认为他试图找到一些方法直接在xml文件中设置url,而不必在Activity中运行方法loadUrl。喜欢:<Webview android:url="@string/my_url" />
但我不认为这是可能的。请参阅官方文档Handling Runtime Changes
更改它实际上会创建一个新视图。
相反,你可以这样编程:
在您的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.xm
l <activity>
android:configChanges="orientation|screenSize"
希望这对你有用。对我来说很好。
修改强>
别忘了给互联网许可,否则它不会运行
<uses-permission android:name="android.permission.INTERNET"/>
如果有任何问题,请告诉我。
谢谢。