【问题标题】:android execute method from another activityandroid从另一个活动执行方法
【发布时间】:2012-07-07 01:04:08
【问题描述】:

我正在从activityA 调用一个在activityB 上的方法。 方法被正确地从 A 调用到 B,但是当我在其中执行 webviewB.loadUrl(myUrl) 时,应用程序因空指针异常而崩溃。相同的 webviewB 方法,如果从 activityB 执行,则可以正常工作。可能是因为上下文,当从 A 调用到 B 时必须设置,但是如何?最好的方法是什么?谢谢。

ActivityA (tabHost) 和 ActivityB (tabcontent) 已正确初始化,来自 ActivityB 的 webview 显示 URL1。 然后,当收到来自 ActivityA 的 evet 时,我需要从 ActivityB 加载 URL2 到 webview 上。

编辑: 当在 ActivityA 上收到事件时,

 ActivityB test = new ActivityB();
 test.recalcula();

活动B,

@Override
    protected void onCreate(Bundle savedInstanceState){
        super.onCreate(savedInstanceState);

        setContentView(R.layout.vistaaib); 

        webviewB = (WebView) findViewById(R.id.webviewB);


            webviewB.loadUrl(URL1);

...


public void recalcula (){


        webviewB.loadUrl(URL2);

}

【问题讨论】:

  • 这里 webviewB 为 null..因为 webviewB 在 layoutB xml 中,它在 onCreate() 中被初始化/膨胀。所以你不能这样做......尝试一些不同的方法
  • 我知道我做不到!这就是为什么我要求“不同的方法”
  • 为什么需要加载ActivityB的webview??..为什么不把那个webview放在ActivityA中
  • 由于多种原因,我无法在同一个 tabhost 活动上设置 webview :(
  • 所以如果你能做到这一点..那么你想让ActivityA的用户界面不可见?并且 webview 变得可见?

标签: java android


【解决方案1】:

Ortisi 建议的两种意图。或者你为什么不尝试创建一个类,在这个类中创建那个方法,然后从两个活动中调用那个方法。

【讨论】:

  • 抱歉,我看不出我现在所做的有什么不同。你能解释得更好吗?
  • 是的,为什么不呢,我很想发布一个详细的方法。但为此,请在您的问题中包含您的方法代码和需要它。 :)
  • 我试图做到具体而清晰。请查看我的编辑。非常感谢您的帮助
  • 您的 webView 在您调用此方法时为 NULL,因此异常是合理的。我不明白为什么需要调用和加载尚未定义的 webview
  • 出于任何其他原因,我必须这样做。当在 ActivityA 上接收到事件时,webviewB 被重新加载...
【解决方案2】:

在活动之间进行通信的最佳方式是使用 Intent 机制。 因此,只需从 activityA 启动一个 Intent,以便与 activityB 通信其 loadUrl 方法应该运行。

或者对于其他解决方案,您可以阅读此问题: Best way to accomplish inter-activity communication in an Android TabHost application

【讨论】:

    猜你喜欢
    • 2013-08-26
    • 2011-10-20
    • 2011-10-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多