아........정말 이것때문에 몇시간째인지 모르겟내요..
일단은 그냥 간단하게 단지 웹뷰만 되는 어플로 웹뷰 뛰어서 로그인을 하면 잘 됩니다.
그런데
전 탭에서 엑티비티그룹 구현하여 웹뷰를 띄워서 로그인을 하려고 하면 오류가 납니다.
웹뷰에서 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;
}
}