0

内部からのインテントの読み込みを実装する際に大きな問題がありshouldOverrideUrlLoadingます。私はそれが私のアプリケーションを構築した方法に関係していると信じています。

ここに私のコードがあります: VariablesStorage.class

public class VariablesStorage
{
private static VariablesStorage instance;
public static  Context webViewContext;
public  WebView webView;

        public static void initInstance()
    {
        if (instance == null)
        {
            // Create the instance
            instance = new VariablesStorage();
        }
    }
    public static VariablesStorage getInstance()
    {
        // Return the instance
        return instance;
    }
    private VariablesStorage()
    {

    }

public void loadWebView() {
        webView.getSettings().setJavaScriptEnabled(true);
 if (isOnline())
        {
            webView.setWebViewClient(new WebViewClient() {

                @Override
                public boolean shouldOverrideUrlLoading(WebView view, String url) {

                    if (url.startsWith("inapp://")) {
                         Intent intent = new Intent(this,profilepictureview.class);
                         intent.putExtra("img",Uri.parse(url).getHost().toString());
                         startActivity(intent);

                        }else
                        {
                            view.getContext().startActivity(
                             new Intent(Intent.ACTION_VIEW, Uri.parse(url)));
                        }                       
                    return true;
                }

                @Override
                public void onReceivedError( WebView view, int errorCode, String description, String failingUrl) 
                    {

                    }
                @Override
                public void onPageFinished(WebView view, String url) {
                    if(mProgress.isShowing()) {
                        mProgress.dismiss();
                    }
                }


            });
            webView.loadUrl(Url);
        }else
        {
            webView.loadData(customHtml, "text/html;charset=utf-8", "UTF-8");
        }


    }


}

そして、WebViewActivity.classを呼び出す私のwebviewVariablesStorage.getInstance().loadWebView(); アクティビティ

public class WebViewActivity extends Activity {

    SharedPreferences pref;
    TextView textView;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.webviewtab);
 VariablesStorage.getInstance().webViewContext = this;
        VariablesStorage.getInstance().webView = (WebView) findViewById(R.id.webView);
            VariablesStorage.getInstance().loadWebView();
}

したがって、このコードを内部に追加するときshouldOverrideUrlLoading

Intent intent = new Intent(this,profilepictureview.class);
 intent.putExtra("img",Uri.parse(url).getHost().toString());
 startActivity(intent);

私はこのエラーが発生しています:

The constructor Intent(new WebViewClient(){}, Class<profilepictureview>) is undefined

これを実装する助けはありますか?ありがとう。

4

2 に答える 2

2

エラーが示すように、この状況で参照されているパラメーターとしてIntent受け取るコンストラクターがありません。インテント コンストラクターを参照してくださいWebViewClient(){}this

おそらくあなたが望むのは

Intent intent = new Intent(webViewContext,profilepictureview.class);

webViewContextただし、最初に初期化する必要があります。

編集 startActivityも必要Contextです。これを試して

webViewContext.startActivity(intent);
于 2013-09-11T17:59:40.043 に答える
0

アクティビティのコンテキストへの静的参照を保持すると、問題が発生します。すべてのビュー (WebView を含む) には getContext() があるため、インテントを作成するときは、「this」や「webViewContext」ではなく、view.getContext() を使用してください。

また、「profilepictureview」という名前のアクティビティを開始しようとしていますが、これはアクティビティというよりビューのように聞こえますか?

于 2013-09-11T18:29:06.050 に答える