// 화면전환 (주소 검색버튼 누르면 주소검색 화면)
search_button.setOnClickListener(new View.OnClickListener() {
public void onClick(View view) {
Intent intent = new Intent(MainActivity.this , SearchActivity2.class);
startActivity(intent);
}
});
메인액티비티에서 이 코드를 통해 버튼을 누르면 화면을 전환해주면
웹뷰가 나타나는 액티비티로 연결됩니다.
package com.example.myapplication;
import androidx.appcompat.app.AppCompatActivity;
import android.content.Intent;
import android.os.Bundle;
import android.webkit.JavascriptInterface;
import android.webkit.WebView;
import android.webkit.WebViewClient;
public class SearchActivity2 extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_search2);
WebView webView = findViewById(R.id.webView);
webView.getSettings().setJavaScriptEnabled(true);
webView.addJavascriptInterface(new BridgeInterface(), "Android");
webView.setWebViewClient(new WebViewClient(){
@Override
public void onPageFinished(WebView view, String url) {
// Android -> Javascript 함수 호출
webView.loadUrl("javascript:sample2_execDaumPostcode();");
}
});
//최초 웹뷰 로드
webView.loadUrl("https://searchadderess.web.app");
}
//웹뷰에서 불러옴
private class BridgeInterface {
@JavascriptInterface
public void processDATA(String data){
//카카오 주소 검색 결과 API의 결과값이 브릿지 통로를 통해 전달받는다.(from JavaScript)
Intent intent = new Intent();
intent.putExtra("data", data);
setResult(RESULT_OK, intent);
finish();
}
}
}
웹뷰가 나타나는 액티비티 코드 입니다.
2022-05-19 23:51:02.684 12132-12132/? E/Zygote: isWhitelistProcess - Process is Whitelisted
2022-05-19 23:51:02.686 12132-12132/? E/Zygote: accessInfo : 1
2022-05-19 23:51:02.726 12132-12132/? E/e.myapplicatio: Unknown bits set in runtime_flags: 0x8000
2022-05-19 23:51:03.310 12132-12132/com.example.myapplication E/MapViewLocationManager: init failed
2022-05-19 23:52:01.486 12132-12132/com.example.myapplication E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.example.myapplication, PID: 12132
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.myapplication/com.example.myapplication.SearchActivity2}: java.lang.ClassCastException: androidx.constraintlayout.widget.ConstraintLayout cannot be cast to android.webkit.WebView
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3488)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3635)
at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:83)
at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:135)
at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:95)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2175)
at android.os.Handler.dispatchMessage(Handler.java:107)
at android.os.Looper.loop(Looper.java:237)
at android.app.ActivityThread.main(ActivityThread.java:7860)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1068)
Caused by: java.lang.ClassCastException: androidx.constraintlayout.widget.ConstraintLayout cannot be cast to android.webkit.WebView
at com.example.myapplication.SearchActivity2.onCreate(SearchActivity2.java:19)
at android.app.Activity.performCreate(Activity.java:7955)
at android.app.Activity.performCreate(Activity.java:7944)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1307)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3463
이건 로그캣 에러 메세지입니다