Java 在onCreate外部调用setContentView(R.layout.nameOfLayout)
我的代码有问题,我不确定我写程序的方式是否是最好的方式 开门见山 在我的应用程序的Java 在onCreate外部调用setContentView(R.layout.nameOfLayout),java,android,android-layout,webview,Java,Android,Android Layout,Webview,我的代码有问题,我不确定我写程序的方式是否是最好的方式 开门见山 在我的应用程序的onCreate方法中,setContentView(R.layout.activity\u main) 被称为 protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //extra
onCreate
方法中,setContentView(R.layout.activity\u main)代码>
被称为
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//extra code..
//there is a lot of code from here on out, but it is not relevant to my question.
}
将显示一个WebView,其中有4个图像加载到WebView。用户可以单击其中一个图像,它会将用户带到4个不同网站中的1个,每个图像对应一个不同的url
在此应用程序中,我正在重写public void onBackPressed()
现在问题来了
当用户浏览网页并具有“历史记录”(所有这些都在webview中处理)时,这意味着用户可以单击后退,它将继续返回到页面的开头,即用户单击其中一幅图像时开始的位置。。但它不会返回到程序最初启动的视图。。这意味着,当用户在my webview中浏览一个页面时,他们单击“后退”按钮,返回的最远距离就是该页面的开始
我想让它回到应用程序的开头,在屏幕上显示4幅图像,用户可以单击不同的图像(即选择不同的网页)
我尝试过的
为了解决这个问题,我假设我会尝试创造一个条件。如果网页不能再返回,一个方法将再次调用setContentView(R.layout.activity\u main)
这确实管用。。只有一个大问题。加载布局时,所有4个图像都不会响应任何类型的单击,即使按下“后退”按钮,应用程序也不会退出
不会引发异常,不会发生崩溃
什么是解决我问题的好办法
如果需要,我可以发布代码。问题是您正在将主要活动的布局加载到webview中
您要做的是导航回主活动
只需调用finish()而不是setContentView()就可以了
((WebView)findViewById(R.id.yourwebviewId)).loadUrl(Url);
//or
((WebView)findViewById(R.id.yourwebviewId)).loadData(yourhtmlstring, "text/html", "UTF-8");
//or safer
WebView web=(WebView)findViewById(R.id.yourwebviewId);
if(web!=null) web.LoadUrl(..)
有关webview方法的更多信息,请查看
假设您只想创建webviewapp。这里有很好的教程
如果您在xml中定义onClick而不是在onCreate中定义onClick,图像将收到单击,我还不清楚您的问题,但我必须说这不是一个好的解决方案。您是否再次尝试webview.loadUrl(),或者您有特殊原因不这样做?您的webview和ImageVIe是否处于同一活动中?内部覆盖OnBakcPressed clear Webview(甚至设置为不可见),图像可见是的,它们在同一活动中。nr4bt,我没有尝试,因为那样会加载网页。我想在单击图像时加载指向网页的4个图像。我调用了finish()
,这样做的目的是退出应用程序。我想回到应用程序的开头,而不是退出它。