2014-12-05 3 views
0

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) 
+0

당신의'onOptionsItemSelected' '활동'권한에 있습니까? –

+0

예. 내가 오버라이드 한 기본 기능입니다. –

답변

0

난 당신이 멋진 카피 & 붙여 넣기를 기반으로 예외 :처럼 보이는

else if(fragmentName.equals("FavoritenFragment")) { 
     WebView mWebView = ((LoadUrlFragment) fragment).getMWebView(); 

else if(fragmentName.equals("FavoritenFragment")) { 
     WebView mWebView = ((FavoritenFragment) fragment).getMWebView(); 

에 변경해야한다고 생각

+0

고마워요. 웬일인지 고마워요. 고치려고 너무 많은 노력을했습니다. –