在onCreate之外调用setContentView(R.layout.nameOfLayout)

时间:2014-01-24 19:27:28

标签: java android android-layout webview

我的代码存在问题,我不确定我编写程序的方式是否是编写代码的最佳方式。

切入追逐..

在我的应用的onCreate方法中,setContentView(R.layout.activity_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个不同网站中的一个,每个图像对应一个不同的网址。

在此应用程序中,我正在覆盖public void onBackPressed()

现在问题就出现了。

当用户浏览网页并拥有“历史记录”(所有这些都在网页浏览中处理)时,意味着用户可以点击返回,它会一直回到页面的开头,直到用户所在的位置当他们点击其中一个图片时开始..但它不会回到程序最初开始的视图..这意味着当用户在我的webview中浏览页面并且他们点击后退按钮时,它会走得最远回到是网页的开头。

我希望它回到应用程序的开头,其中4个图像出现在屏幕上,用户可以点击不同的图像(即选择不同的网页)。

我尝试了什么 为了解决这个问题,我假设我会尝试创造一个条件。如果网页无法再返回,则方法会再次调用setContentView(R.layout.activity_main)

这只能解决一个大问题。当布局加载时,所有4个图像都不响应任何类型的点击,即使按下后退按钮,应用程序也不会退出。

不会抛出任何异常,也不会发生崩溃。

什么是我的问题的好方法?

如果需要,我可以发布代码。

2 个答案:

答案 0 :(得分:1)

  ((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方法的更多信息,请查看android documentation

假设您只想创建webviewapp。这是一个很好的教程 WebView-based Applications

答案 1 :(得分:0)

问题是您正在将主要活动的布局加载到webview中。

您要做的是导航回主要活动。

只需调用finish()而不是setContentView()即可。