2013-03-14 53 views
1

我用PhoneGap创建了一个Android应用程序。在MainActivity看起来是这样的:如何从我的Android应用中的其他Activity访问主Webview实例?

MainActivity.java

import org.apache.cordova.*; 
import android.annotation.SuppressLint; 
import android.os.Bundle; 
import android.webkit.WebView; 
import android.webkit.WebViewClient; 

public class MainActivity extends DroidGap { 
     @Override 
     public void onCreate(Bundle icicle) { 
     super.onCreate(icicle); 
     super.loadUrl("file:///android_asset/www/index.html"); 
     } 
} 

另外,我当我的index.html的范围内有一定的JavaScript事件发生时都会调用另一个活动。在这种情况下,onCreate(Bundle b)被调用:

MyUriActivity.java

import android.app.Activity; 
import android.os.Bundle; 

public class MyUriActivity extends Activity { 
    @Override 
    public void onCreate(Bundle b){ 
     super.onCreate(b); 

     // I want to access appView here, so I can call 
     // appView.loadUrl("file:///android_asset/www/index.html"); 
    } 
} 

如上所示的评论,我想在该事件发生重新打开index.html,但我不知道如何访问webview实例。

我该怎么做?

回答

2

要在两个动作之间的沟通,你应该使用Intents

他们让你把自定义的数据一个消息,并将其发送到另一个动作,是这样的:

Intent intent = new Intent(Intent.ACTION_SEND); 
intent.setType("text/plain"); 
intent.putExtra(android.content.Intent.EXTRA_TEXT, "News for you!"); 
startActivity(intent); 

M.拉尔斯·沃格尔对这个一吨的很好的例子(上面一个是从他的博客采取

http://www.vogella.com/articles/AndroidIntent/article.html

如果我正确理解您的问题,您希望MainActivity在MyUriActivity中发生某些事情时显示某些内容(已加载的WebView)。您应该在MyUriActivity中创建一个意向然后发送给MainActivity。

-1

这可能不是最优雅的解决方案,但您应该尝试一下。

由于两者都是您的应用程序,请在MainActivity中创建一个getFile()方法并返回所需的文件(不仅仅是URL,您需要返回文件)。然后使用反射从MyUriActivity访问此的GetFile()方法,你应该能够获得所需要的文件

+1

这是从一个活动向另一个活动发送消息的最糟糕的方式。 – 2013-03-18 11:31:15

+0

他不是试图从一项活动中发送消息,是吗? – 2013-03-18 11:33:02

+0

“然后使用来自MyUriActivity的反射来访问这个getFile()方法” - 如果你想告诉某个Action的事情,那不是你怎么做的。 – 2013-03-18 11:34:01

相关问题