2013-11-28 3 views
0

웹보기에 어려움이 있습니다. 양식이있는 웹 페이지를로드하는 webview가 있습니다. 양식에 타겟 _blank 속성이 있습니다. 양식의 작업 URL이로드 된 새 webview 창을 열려면 webview가 필요합니다. 다음 코드를 적용했습니다.Android webview 여러 창

public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    web = (WebView) findViewById(R.id.webview1); 
    progressBar = (ProgressBar) findViewById(R.id.progressBar1); 

    web = new WebView(this);   
    WebSettings settings = web.getSettings(); 
    settings.setJavaScriptEnabled(true); 
    settings.setDomStorageEnabled(true); 
    settings.setSupportMultipleWindows(true); 
    settings.setJavaScriptCanOpenWindowsAutomatically(true); 

    web.loadUrl("https://www.example.com/formpage"); 
    web.setWebViewClient(new myWebClient()); 

    web.setWebChromeClient(new WebChromeClient() 
    { 
     /* multiple webview window overload method - start */ 
     public boolean onCreateWindow(WebView view, boolean dialog, boolean userGesture, Message resultMsg) 
     { 
      WebView newWebView = new WebView(view.getContext()); 

      WebView.WebViewTransport transport = (WebView.WebViewTransport) resultMsg.obj; 
      transport.setWebView(newWebView); 
      resultMsg.sendToTarget(); 
      return true; 
     } 

     /* multiple webview window overload method - end */ 
    }); 

    setContentView(web); 
} 

양식 제출 버튼을 클릭해도 아무런 변화가 없습니다.

답변

1

새 WebView를보기 계층 구조에 삽입해야합니다.

1

이 질문을 통해 도움을 받으십시오.

public class WebViewActivity extends Activity { 
private WebView webview; 
private static final String TAG = "Main"; 
private ProgressDialog progressBar; 
private TextView header_maintext; 
private TextView headeroptiontext; 
private RelativeLayout back; 
private String url_string="http://www.google.com"; 
private String header_maintext_string="tittle"; 

/** Called when the activity is first created. */ 
@SuppressLint("SetJavaScriptEnabled") @Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    requestWindowFeature(Window.FEATURE_NO_TITLE); 
    setContentView(R.layout.webview_layout); 


    url_string = getIntent().getStringExtra("url"); 
    header_maintext_string = getIntent().getStringExtra("header_text"); 

    webview = (WebView)findViewById(R.id.webview01); 
    header_maintext= (TextView)findViewById(R.id.header_maintext); 
    header_maintext.setText(header_maintext_string); 

    headeroptiontext = (TextView)findViewById(R.id.headeroptiontext); 
    headeroptiontext.setVisibility(View.GONE); 

    WebSettings settings = webview.getSettings(); 
    settings.setJavaScriptEnabled(true); 
    webview.setScrollBarStyle(WebView.SCROLLBARS_OUTSIDE_OVERLAY); 
    webview.getSettings().setLoadWithOverviewMode(true); 
    webview.getSettings().setUseWideViewPort(true); 

     back = (RelativeLayout) findViewById(R.id.back_layout); 
     back.setOnClickListener(new OnClickListener() { 

     @Override 
     public void onClick(View arg0) 
     { 
      // TODO Auto-generated method stub 
      if(webview.canGoBack() == true) 
       { 
        webview.goBack(); 
       } 
      else 
       { 
        finish(); 
       } 
     } 
    }); 

    final AlertDialog alertDialog = new AlertDialog.Builder(this).create(); 

    progressBar = ProgressDialog.show(WebViewActivity.this, "tittle", "Loading..."); 

    webview.setWebViewClient(new WebViewClient() { 
     public boolean shouldOverrideUrlLoading(WebView view, String url) { 

      view.loadUrl(url); 
      return true; 
     } 

     public void onPageFinished(WebView view, String url) { 
      Log.i(TAG, "Finished loading URL: " +url); 
      if (progressBar.isShowing()) { 
       progressBar.dismiss(); 
      } 
     } 

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

      Toast.makeText(WebViewActivity.this, "Oh no! " + description, Toast.LENGTH_SHORT).show(); 
      alertDialog.setTitle("Error"); 
      alertDialog.setMessage(description); 
      alertDialog.setButton("OK", new DialogInterface.OnClickListener() { 
       public void onClick(DialogInterface dialog, int which) { 
        return; 
       } 
      }); 
      alertDialog.show(); 
     } 
    }); 
    webview.loadUrl(url_string); 


} 
@Override 
public boolean onKeyDown(int keyCode, KeyEvent event) { 
    if(event.getAction() == KeyEvent.ACTION_DOWN){ 
     switch(keyCode) 
     { 
     case KeyEvent.KEYCODE_BACK: 
      if(webview.canGoBack() == true){ 
       webview.goBack(); 
      }else{ 
       finish(); 
      } 
      return true; 
     } 

    } 
    return super.onKeyDown(keyCode, event); 
} 
}