1

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 インスタンスにアクセスする方法がわかりません。

どうすればいいですか?

4

2 に答える 2

2

2 つのアクション間で通信するには、インテントを使用する必要があります

次のように、カスタム データをメッセージに入れ、別のアクションに送信できます。

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

M. Lars Vogel には、これに関する素晴らしい例がたくさんあります (上の例は彼のブログから引用したものです)。

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

私があなたの質問を正しく理解していれば、MyUriActivity で何かが起こったときに、MainActivity に何か (既に読み込まれている WebView) を表示させたいと考えています。MyUriActivity でインテントを作成し、それを MainActivity に送信する必要があります。

于 2013-03-18T11:33:13.573 に答える
-1

これは最も洗練された解決策ではないかもしれませんが、試してみる必要があります。

どちらもアプリなので、MainActivityでgetFile()メソッドを作成し、必要なファイルを返します(URLだけでなく、ファイルを返す必要があります)。次に、MyUriActivityからのリフレクションを使用してこのgetFile()メソッドにアクセスすると、必要なファイルを取得できるはずです。

于 2013-03-18T11:25:42.067 に答える