我使用PhoneGap创建了一个Android应用。 MainActivity看起来像这样:
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实例。
我该怎么做?
答案 0 :(得分:2)
要在两个操作之间进行通信,您应该使用Intents
它们允许您将自定义数据放入消息中并将其发送到另一个Action,如下所示:
Intent intent = new Intent(Intent.ACTION_SEND);
intent.setType("text/plain");
intent.putExtra(android.content.Intent.EXTRA_TEXT, "News for you!");
startActivity(intent);
微米。 Lars Vogel有很多很好的例子(上面的例子来自他的博客
http://www.vogella.com/articles/AndroidIntent/article.html
如果我正确理解了您的问题,您希望在MyUriActivity中发生某些事情时,MainActivity会显示某些内容(已加载的WebView)。您应该在MyUriActivity中创建一个intent,然后发送给MainActivity。
答案 1 :(得分:-1)
这可能不是最优雅的解决方案,但您应该尝试一下。
由于两者都是您的应用程序,因此在MainActivity中创建一个getFile()方法并返回所需的文件(不仅仅是URL,您需要返回文件)。然后使用MyUriActivity的反射来访问这个getFile()方法,你应该能够获得所需的文件