에서 비 Parcelable 객체를 마샬링 할 수 없습니다 던졌습니다 내 WebChromeClient
내 기본 활동 :intent.putExtras (문자열 키, 메시지 객체) 이것은 프로세스
@Override
public boolean onCreateWindow(WebView view, boolean isDialog, boolean isUserGesture, Message resultMsg) {
Intent intent = new Intent(mActivty, PopUpActivity.class);
intent.putExtra("MESSAGE", resultMsg);
mActivity.startActivity(intent);
return true;
을 그리고 이것은 내가 PopUpActivity
에서 처리하는 방법입니다 :
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_webpage);
getWindow().setBackgroundDrawable(null);
mCloseButton = (ImageButton) findViewById(R.id.close_button);
// we don't care about getting a warmed webview in this case, just create a new one
mWebView = WebViewConstructor.constructWebView(this);
mWebViewContainer = (RelativeLayout) findViewById(R.id.webview_container);
// add the webview to the container layout
WebViewManager.attachWebViewToParentContainer(mWebView, mWebViewContainer);
Intent intent = getIntent();
if (intent.getExtras() != null) {
Message resultMsg = intent.getExtras().getParcelable("MESSAGE");
WebView.WebViewTransport transport = (WebView.WebViewTransport) resultMsg.obj;
transport.setWebView(mWebView);
resultMsg.sendToTarget();
}
기본적으로 WebView를 구성하고 메시지를 처리 할 수 있도록 resultMsg.obj를 PopUpActivity에 전달한 WebView.WebViewTransport를 전달하고 싶습니다. 그러나, 나는 선 intent.putExtra("MESSAGE", resultMsg)
로 인한이 오류를 얻을 :
Can't marshal non-Parcelable objects across processes.
resultMsg는 Parcelable을 구현하는 메시지 클래스는 비록?
무엇이 여기에 있습니까?
감사합니다 .. 당신은 내가'Message'를 전송하는'intent.putExtra'를 사용하기 위해 노력하고있어, 그것이 원래에 그대로'Message'이 ('Parcelable'입니다 언급 한 바와 같이 암호). 그러나,'intent.putExtra ("MESSAGE", resultMsg);를 시도하면 에러가 발생한다.'resultMsg'는 Message 객체 임에도 불구하고 Parcelable이 아니라고 말하고있다. – byInduction
두 가지 방법으로 시도 할 수 있습니다. – KeLiuyue
두 번째 방법을 시도했지만 여전히 '프로세스간에 비소 거할 수없는 객체를 마샬링 할 수 없음'오류 : 의도 Intent = new Intent (mActivity, PopUpActivity.class); 번들 번들 = 새 번들(); bundle.putParcelable ("MESSAGE", resultMsg); 의도입니다.putExtras (번들); intent.addFlags (Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_SINGLE_TOP); mActivity.startActivity (intent);' – byInduction