내 Action Bar
에는 즐겨 찾기를 추가 할 수있는 버튼이 있지만 그 중 하나는 mWebView
개체가 있어야합니다. 동일한 코드를 사용하고 있지만 FavoriteFragment
에서 보일 수 없습니다. 내 MainActivity
에서와 같이 LoadUrlFragment
에 도착하면 onclick이 실행되는 즉시 충돌이 발생합니다.단편에서 활동으로 WebView 객체 가져 오기
어떻게하면 내 액티비티에 그 mWebView
을 충돌시키지 않고 얻을 수 있습니까?
MainActivity
@Override
public boolean onOptionsItemSelected(MenuItem item) {
if (mDrawerToggle.onOptionsItemSelected(item)) {
return true;
}
switch (item.getItemId()) {
case R.id.action_favoriten:
if (fragmentName.equals("LoadUrlFragment")) {
WebView mWebView = ((LoadUrlFragment) fragment).getMWebView();
mWebView.loadUrl("javascript:window.HTMLOUT.saveFavoriteData('<head>'+document.getElementsByTagName('html')[0].innerHTML+'</head>');");
} else if(fragmentName.equals("FavoritenFragment")) {
WebView mWebView = ((LoadUrlFragment) fragment).getMWebView();
mWebView.loadUrl("javascript:window.HTMLOUT.saveFavoriteData('<head>'+document.getElementsByTagName('html')[0].innerHTML+'</head>');");
} else {
Toast.makeText(activity, "Favoriten können hier nicht gesetzt werden", Toast.LENGTH_SHORT).show();
}
return true;
default:
return super.onOptionsItemSelected(item);
}
}
LoadUrlFragment
public WebView getMWebView() {
return mWebView;
}
내 LoadUrlFragment을 loade FavoriteFragment
public WebView getMWebView() {
WebView mWebView = ((LoadUrlFragment) fragment).getMWebView();
return mWebView;
}
FavoriteFragment
fragment = new LoadUrlFragment();
Bundle bundle = new Bundle();
bundle.putString("url", allFavorite.get(position).getUrl());
fragment.setArguments(bundle);
FragmentManager fragmentManager = getFragmentManager();
FragmentTransaction transaction = fragmentManager.beginTransaction();
transaction.replace(R.id.frame_container, fragment);
transaction.addToBackStack(null);
transaction.commit();
,
로그 캣
12-05 14:57:07.588: E/AndroidRuntime(11340): FATAL EXCEPTION: main
12-05 14:57:07.588: E/AndroidRuntime(11340): Process: ch.digvis.abcproduction, PID: 11340
12-05 14:57:07.588: E/AndroidRuntime(11340): java.lang.ClassCastException: ch.digvis.abcproduction.fragment.FavoritenFragment cannot be cast to ch.digvis.abcproduction.fragment.LoadUrlFragment
12-05 14:57:07.588: E/AndroidRuntime(11340): at ch.digvis.abcproduction.MainActivity.onOptionsItemSelected(MainActivity.java:188)
12-05 14:57:07.588: E/AndroidRuntime(11340): at android.app.Activity.onMenuItemSelected(Activity.java:2600)
12-05 14:57:07.588: E/AndroidRuntime(11340): at com.android.internal.policy.impl.PhoneWindow.onMenuItemSelected(PhoneWindow.java:1019)
12-05 14:57:07.588: E/AndroidRuntime(11340): at com.android.internal.view.menu.MenuBuilder.dispatchMenuItemSelected(MenuBuilder.java:741)
12-05 14:57:07.588: E/AndroidRuntime(11340): at com.android.internal.view.menu.MenuItemImpl.invoke(MenuItemImpl.java:152)
12-05 14:57:07.588: E/AndroidRuntime(11340): at com.android.internal.view.menu.MenuBuilder.performItemAction(MenuBuilder.java:884)
12-05 14:57:07.588: E/AndroidRuntime(11340): at com.android.internal.view.menu.MenuBuilder.performItemAction(MenuBuilder.java:874)
12-05 14:57:07.588: E/AndroidRuntime(11340): at com.android.internal.view.menu.ActionMenuView.invokeItem(ActionMenuView.java:546)
12-05 14:57:07.588: E/AndroidRuntime(11340): at com.android.internal.view.menu.ActionMenuItemView.onClick(ActionMenuItemView.java:119)
12-05 14:57:07.588: E/AndroidRuntime(11340): at android.view.View.performClick(View.java:4569)
12-05 14:57:07.588: E/AndroidRuntime(11340): at android.view.View$PerformClick.run(View.java:18553)
12-05 14:57:07.588: E/AndroidRuntime(11340): at android.os.Handler.handleCallback(Handler.java:733)
12-05 14:57:07.588: E/AndroidRuntime(11340): at android.os.Handler.dispatchMessage(Handler.java:95)
12-05 14:57:07.588: E/AndroidRuntime(11340): at android.os.Looper.loop(Looper.java:212)
12-05 14:57:07.588: E/AndroidRuntime(11340): at android.app.ActivityThread.main(ActivityThread.java:5135)
12-05 14:57:07.588: E/AndroidRuntime(11340): at java.lang.reflect.Method.invokeNative(Native Method)
12-05 14:57:07.588: E/AndroidRuntime(11340): at java.lang.reflect.Method.invoke(Method.java:515)
12-05 14:57:07.588: E/AndroidRuntime(11340): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:877)
12-05 14:57:07.588: E/AndroidRuntime(11340): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:693)
12-05 14:57:07.588: E/AndroidRuntime(11340): at dalvik.system.NativeStart.main(Native Method)
당신의'onOptionsItemSelected' '활동'권한에 있습니까? –
예. 내가 오버라이드 한 기본 기능입니다. –