Android 是否在加载其他活动时保存WebView?

Android 是否在加载其他活动时保存WebView?,android,android-activity,android-webview,Android,Android Activity,Android Webview,我有一个webview,我用一个外部URL加载它,这样加载第一个页面,我点击一个链接进入第二个页面,然后点击第三个页面 现在在第三页上,我编写了一个Javascript来打开另一个运行良好的活动。 但在活动结束后,我的WebView再次重新加载第一页,该页应该是活动调用的同一页 你知道我做错了什么吗 提前谢谢 import java.io.ByteArrayOutputStream; import java.io.File; import java.io.FileNotFoundExceptio

我有一个webview,我用一个外部URL加载它,这样加载第一个页面,我点击一个链接进入第二个页面,然后点击第三个页面

现在在第三页上,我编写了一个Javascript来打开另一个运行良好的活动。 但在活动结束后,我的WebView再次重新加载第一页,该页应该是活动调用的同一页

你知道我做错了什么吗

提前谢谢

import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.IOException;

import android.R.bool;
import android.app.Activity;
import android.content.Intent;
import android.graphics.Bitmap;
import android.graphics.Bitmap.CompressFormat;
import android.graphics.BitmapFactory;
import android.net.Uri;
import android.os.Bundle;
import android.os.Environment;
import android.provider.MediaStore;
import android.util.Base64;
import android.webkit.WebChromeClient;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import android.widget.Button;

import android.widget.Toast;

public class Cam2 extends Activity {
    int CAMERA_PIC_REQUEST = 2;

    WebView webview;
    String imageSource;
    boolean _hasImage = false;

    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        webview = (WebView) findViewById(R.id.webview);
        webview.getSettings().setJavaScriptEnabled(true);

        final Activity activity = this;
        webview.setWebChromeClient(new WebChromeClient() {
            public void onProgressChanged(WebView view, int progress) {
                activity.setProgress(progress * 1000);
            }
        });
        webview.setWebViewClient(new WebViewClient() {
            public void onReceivedError(WebView view, int errorCode,
                    String description, String failingUrl) {
                Toast.makeText(activity, "Oh no! " + description,
                        Toast.LENGTH_SHORT).show();
            }

            @Override
            public void onPageFinished(WebView view, String url) {
                if (_hasImage) {
                    webview.loadUrl("javascript:AndroidSubmitToWeb();");
                }
            }
        });

        webview.addJavascriptInterface(new JavaScriptInterface(this), "Android");
        webview.loadUrl("http://192.168.0.5/SomeWeb");
    }

    public void openCamera() {
        Intent cameraIntent = new Intent(
                android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
        startActivityForResult(cameraIntent, CAMERA_PIC_REQUEST);
    }

    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        if (requestCode == CAMERA_PIC_REQUEST) {
            Bitmap thumbnail = (Bitmap) data.getExtras().get("data");
            String s = storeAndExit(thumbnail);
            webview.loadUrl("javascript:function ImageData(){ return '" + s
                    + "';}");
            _hasImage = true;
        } else {
            Toast.makeText(Cam2.this, "Picture Not taken", 5000).show();
        }
        super.onActivityResult(requestCode, resultCode, data);
    }

    public String storeAndExit(Bitmap data) {
        ByteArrayOutputStream jpeg_data = new ByteArrayOutputStream();
        Bitmap myMap = data;
        try {
            if (myMap.compress(CompressFormat.JPEG, 70, jpeg_data)) {
                byte[] code = jpeg_data.toByteArray();
                byte[] output = org.apache.commons.codec.binary.Base64
                        .encodeBase64(code);
                String js_out = new String(output);
                return js_out;
            }
        } catch (Exception e) {
            Toast.makeText(Cam2.this,
                    "STORE IMAGE EXCEPTION: " + e.getMessage(), 5000).show();
        }
        finish();
        return null;
    }
}

我想你应该用onCreate()方法

该web视图已创建并显示网页

你只需要检查一下就行了

致以最良好的祝愿


~Anup

请检查在退出第二个活动时是否再次调用onCreate()。你的意思是我必须检查是否创建了WebView,如果创建了,则不执行其他操作加载URL,对吗?是否在创建另一个活动时销毁了第一个活动如果是,请不要这样做Hi-Anup,谢谢你的帮助,我已经编辑了我的文章和代码。我是Android的初学者