2014-09-05 4 views
0

У меня есть деятельность с OnCreate, что я раньше был только что вызов функции пустот, чтобы загрузить URL в WebViewВызов WebView в MainActivity из фрагмента меню OnClick

private CharSequence mTitle; 
private String mPageURL; 

private WebView mWebView; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_my); 

    mNavigationDrawerFragment = (NavigationDrawerFragment) 
      getFragmentManager().findFragmentById(R.id.navigation_drawer); 
    mTitle = getTitle(); 

    // Set up the drawer. 
    mNavigationDrawerFragment.setUp(
      R.id.navigation_drawer, 
      (DrawerLayout) findViewById(R.id.drawer_layout)); 

    mPageURL = "http://beta.html5test.com/"; 
    loadWebViewContent(); 
} 

public void loadWebViewContent() { 
    mWebView = (WebView) findViewById(R.id.activity_main_webview); 
    mWebView.setWebViewClient(new WebViewClient()); 
    // Enable Javascript 
    WebSettings webSettings = mWebView.getSettings(); 
    webSettings.setJavaScriptEnabled(true); 

    //mPageURL = "http://beta.html5test.com/"; 
    mWebView.loadUrl(mPageURL); 
} 

Теперь у меня есть, что работает, однако, Я пытаюсь получить пункт меню, чтобы позвонить loadWebViewContent(), чтобы загрузить другую страницу.

У меня есть настройки слушателя OnClick в моем NavigationDrawerFragment

@Override 
     public void onItemClick(AdapterView<?> parent, View view, int position, long id) { 
      selectItem(position); 
      Toast.makeText(getActivity(), "test"+position, Toast.LENGTH_LONG).show(); 
     } 

Но я не могу понять, как вызвать функцию здесь, или в случае необходимости, что должно быть сделано, чтобы переместить loadWebViewContent() к фрагмент (поскольку это вещь в меню, я в порядке с этим), но из того, что я понимаю, WebView принадлежит Activity, поэтому мне все равно придется делать то, что я не делаю, чтобы получить доступ к этой функции и скажите ему загрузить URL.

Любая помощь или указание в правильном направлении очень ценится, спасибо.

+0

вы хотите вызвать этот метод из вашего NavigationDrawerFragment? – Subham

+0

@Subham да, это было бы идеально, но если есть недостатки, наследуемые при этом, я открыт для этого другим способом. – Josh

+0

см. Мой ответ. Я надеюсь, что это поможет вам – Subham

ответ

1

вы можете иметь один обратный вызов от фрагмента к активности, например

public class NavigationDrawerFragment{ 
     private Callback mCallback; 

     public void setCallback(Callback callback){ 
      mCallback = callback; 
     } 

     @Override 
     public void onItemClick(AdapterView<?> parent, View view, int position, long id) { 
      selectItem(position); 
      Toast.makeText(getActivity(), "test"+position, Toast.LENGTH_LONG).show(); 
      mCallback.openUrl("your url"); 
     } 

     public interface CallBack{ 
      public void openUrl(String urlToOprn); 
     } 

    } 

В вас деятельности реализует этот интерфейс, как-

public MainActivity extends Activity implements Callback{ 
      @Override 
      protected void onCreate(Bundle savedInstanceState) { 
       super.onCreate(savedInstanceState); 
       setContentView(R.layout.activity_my); 

       mNavigationDrawerFragment = (NavigationDrawerFragment) 
       getFragmentManager().findFragmentById(R.id.navigation_drawer); 
       mNavigationDrawerFragment.setCallback(this); 
      ------you code from here 

      } 

      @Override 
      public void openUrl(String urlToOpen){ 
       mPageURL = urlToOpen; 
       loadWebViewContent(); 
      } 

     } 
+1

Это отлично работает, спасибо. – Josh

+1

@ Josh приветствуются – Subham

Смежные вопросы