Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/323.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/228.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在onCreate外部调用setContentView(R.layout.nameOfLayout)_Java_Android_Android Layout_Webview - Fatal编程技术网

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()
,这样做的目的是退出应用程序。我想回到应用程序的开头,而不是退出它。