【问题标题】:calling setContentView(R.layout.nameOfLayout) outside of onCreate在 onCreate 之外调用 setContentView(R.layout.nameOfLayout)
【发布时间】:2014-01-24 19:27:28
【问题描述】:

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

切入正题..

在我的应用程序的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 张图像。用户可以点击其中任意一张图片,它会将用户带到 4 个不同网站中的 1 个,每张图片对应一个不同的 url。

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

现在问题来了。

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

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

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

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

不抛出异常,不发生崩溃。

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

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

【问题讨论】:

  • 如果你在 xml 中定义 onClick 而不是在 onCreate 中,图像将收到点击,我还没有清楚地知道你的问题,但我必须说这不是一个好的解决方案
  • 您是否再次尝试了 webview.loadUrl() 或者您有特定的理由不这样做?
  • 您的 webview 和 imagevies 在同一个活动中吗?内部覆盖 OnBakcPressed 清除 Webview(甚至设置为不可见)并将图像设置为可见
  • 是的,他们在同一个活动中。和 nr4bt,我没有尝试这样做,因为那会加载网页。我想加载点击图片时引导到网页的 4 张图片。

标签: java android android-layout webview


【解决方案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

【讨论】:

    【解决方案2】:

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

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

    只需调用 finish() 而不是 setContentView() 就可以解决问题。

    【讨论】:

    • 我打电话给finish(),它的作用是退出应用程序。我想回到应用程序的开头而不是退出它。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-10-17
    • 1970-01-01
    • 2023-02-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多