아........정말 이것때문에 몇시간째인지 모르겟내요..

 

일단은 그냥 간단하게 단지 웹뷰만 되는 어플로 웹뷰 뛰어서 로그인을 하면 잘 됩니다.

 

그런데

전 탭에서 엑티비티그룹 구현하여 웹뷰를 띄워서 로그인을 하려고 하면 오류가 납니다.

 

 

웹뷰에서 Context 오류라니요.. 오류검색해보면 죄다 this->getParent() 로 바꾸라는 말뿐이고..

웹뷰에서 그런게 바꾸는게 있던가요?;

 

밑에는 웹뷰 소스입니다.

06-06 03:15:04.968: ERROR/AndroidRuntime(11640): android.view.WindowManager$BadTokenException: Unable to add window -- token android.app.LocalActivityManager$LocalActivityRecord@40552438 is not valid; is your activity running?
06-06 03:15:04.968: ERROR/AndroidRuntime(11640):     at android.view.ViewRoot.setView(ViewRoot.java:532)
06-06 03:15:04.968: ERROR/AndroidRuntime(11640):     at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:177)
06-06 03:15:04.968: ERROR/AndroidRuntime(11640):     at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:91)
06-06 03:15:04.968: ERROR/AndroidRuntime(11640):     at android.view.Window$LocalWindowManager.addView(Window.java:424)
06-06 03:15:04.968: ERROR/AndroidRuntime(11640):     at android.app.Dialog.show(Dialog.java:241)
06-06 03:15:04.968: ERROR/AndroidRuntime(11640):     at android.app.AlertDialog$Builder.show(AlertDialog.java:802)
06-06 03:15:04.968: ERROR/AndroidRuntime(11640):     at android.webkit.WebView.onSavePassword(WebView.java:1564)
06-06 03:15:04.968: ERROR/AndroidRuntime(11640):     at android.webkit.CallbackProxy.handleMessage(CallbackProxy.java:438)
06-06 03:15:04.968: ERROR/AndroidRuntime(11640):     at android.os.Handler.dispatchMessage(Handler.java:99)
06-06 03:15:04.968: ERROR/AndroidRuntime(11640):     at android.os.Looper.loop(Looper.java:123)
06-06 03:15:04.968: ERROR/AndroidRuntime(11640):     at android.app.ActivityThread.main(ActivityThread.java:3687)
06-06 03:15:04.968: ERROR/AndroidRuntime(11640):     at java.lang.reflect.Method.invokeNative(Native Method)
06-06 03:15:04.968: ERROR/AndroidRuntime(11640):     at java.lang.reflect.Method.invoke(Method.java:507)
06-06 03:15:04.968: ERROR/AndroidRuntime(11640):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:842)
06-06 03:15:04.968: ERROR/AndroidRuntime(11640):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:600)
06-06 03:15:04.968: ERROR/AndroidRuntime(11640):     at dalvik.system.NativeStart.main(Native Method)

 

 

public class web_view extends Activity {
 private WebView webview;
 private ProgressDialog dialog;
 boolean loading_finish;
 private String url;
 public void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);

  requestWindowFeature(Window.FEATURE_NO_TITLE);
  setContentView(R.layout.w_view);

  Intent get = getIntent();
  url = get.getStringExtra("url");
  String title = get.getStringExtra("title");
  TextView _title = (TextView) findViewById(R.id.title);
  ImageButton home = (ImageButton) findViewById(R.id.home);
  ImageButton back = (ImageButton) findViewById(R.id.back);

  _title.setText(title);
  webview = (WebView) findViewById(R.id.webview);
  webview.getSettings().setDefaultTextEncodingName("euc-kr");
  webview.getSettings().setJavaScriptEnabled(true);
  webview.setHorizontalScrollBarEnabled(false);
  webview.setVerticalScrollBarEnabled(false);
  webview.getSettings().setJavaScriptEnabled(true);
  webview.getSettings().setDefaultZoom(ZoomDensity.FAR);
  webview.getSettings().setBuiltInZoomControls(true);
  webview.getSettings().setSavePassword(true);
  webview.getSettings().setSaveFormData(true);
  webview.getSettings().setAllowFileAccess(true);
  webview.requestFocus();
  webview.setDownloadListener(new DownloadListener() {
   @Override
   public void onDownloadStart(String url, String userAgent, String contentDisposition, String mimeType, long contentLength) {
    Uri uri = Uri.parse(url);
    Intent intent = new Intent(Intent.ACTION_VIEW, uri);
    startActivity(intent);
   }
  });

  webview.setInitialScale(70);
  webview.loadUrl("url);
  
  dialog = ProgressDialog.show(getParent(), "", "  잠시만 기다려 주세요 ...", true);
  dialog.setCancelable(true);
  dialog.show();
  loading_finish=false;
  loading_timeout();

  webview.setWebChromeClient(new WebChromeClient() {
   public void onProgressChanged(WebView view, int progress) {
    
   }
  });
  webview.setWebViewClient(new WebViewClient() {
   public void onReceivedError(WebView view, int errorCode, String description, String fallingUrl) {
    Toast.makeText(getParent(), "로딩중에 오류가 발생했습니다. \n잠시후 다시 시도해 주세요.\n 오류번호:" + description, Toast.LENGTH_SHORT).show();
   }
  });

  webview.setWebViewClient(new WebViewClient() {
   public void onPageFinished(WebView view, String url) {
    super.onPageFinished(view, url);
    loading_finish = true;
    dialog.dismiss();
   }
  });
  webview.setWebChromeClient(new WebChromeClient() {
   @Override
   public boolean onJsAlert(WebView view, String url, String message, final android.webkit.JsResult result) {
    new AlertDialog.Builder(getParent()).setTitle("웹 페이지의 메세지").setMessage(message).setPositiveButton(android.R.string.ok, new AlertDialog.OnClickListener() {
     public void onClick(DialogInterface dialog, int which) {

      tab_back();
      webview.loadUrl("");
      result.confirm();
     }
    }).setCancelable(false).create().show();

    return true;
   };
  });

  

  back.setOnClickListener(new View.OnClickListener() {
   public void onClick(View v) {
    tab_back();
   }
  });
  home.setOnClickListener(new View.OnClickListener() {
   public void onClick(View v) {

    finish(); // 현재 엑티비티를 끝내고
    Intent i = new Intent(web_view.this, Main.class); // 새로운 엑티비티를
                 // 생성(자기자신)
    startActivity(i);
   }
  });
 }

 public void tab_back() {
  if (SubActivity.present_tab == "tab_1") {
   FirstGroup.group.back();
  } else if (SubActivity.present_tab == "tab_2") {
   SecondGroup.group.back();
  } else if (SubActivity.present_tab == "tab_3") {
   ThirdGroup.group.back();
  } else if (SubActivity.present_tab == "tab_5") {
   FifthGroup.group.back();
  }

 }

 public void loading_timeout() {
  new Thread(new Runnable() {
   @Override
   public void run() {
    try {
     Thread.sleep(8000);
    } catch (InterruptedException e) {
     // TODO Auto-generated catch block
     e.printStackTrace();
    }
    runOnUiThread(new Runnable() {
     public void run() {
      if (!loading_finish) {
       webview.loadUrl("url);
       Toast.makeText(getParent(), "인터넷 상태가 불안정 합니다.\n 잠시후에 다시 시도해주세요.", Toast.LENGTH_LONG).show();
       dialog.dismiss();
      }
     }
    });
   }
  }).start();
 }
 public void onBackPressed() {
  if(webview.canGoBack()){
  webview.goBack();
  }else{
   tab_back();
  }
  return;
 }

}