2013-07-05 6 views
0

Чтобы открыть деятельность с основной является,открыть конкретный URL передается от активности фрагментировать

Intent webviewIntent = new Intent(context, WebViewActivity.class); 
webviewIntent.putExtra(WebViewActivity.URL_FROM_LINK, mUrlSpan.getURL()); 
startActivity(webviewIntent); 

отсюда открыть активность,

public class WebViewActivity extends Activity { 

public static final String URL_FROM_LINK = "UrlFromLinkClick"; 
public static final String BUNDLE_URL = "UrlFromBundle"; 
private String mNewsItemUrl; 
boolean detailPage = false; 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_webview); 

    if (getIntent().getExtras() != null && getIntent().getExtras().containsKey(URL_FROM_LINK)) { 
     mNewsItemUrl = getIntent().getExtras().getString(URL_FROM_LINK); 
     Bundle bundle = new Bundle(); 
     bundle.putString(BUNDLE_URL, mNewsItemUrl); 


     if (findViewById(R.id.displayDetail) != null) { 
      detailPage = true; 
      //getFragmentManager().popBackStack(); 

      WebViewFragment webViewFragment = (WebViewFragment) getFragmentManager().findFragmentById(R.id.displayDetail); 
      if (webViewFragment == null) { 
       FragmentTransaction ft = getFragmentManager().beginTransaction(); 
       webViewFragment = new WebViewFragment(); 
       webViewFragment.setArguments(bundle); 
       ft.replace(R.id.displayDetail, webViewFragment, "WebViewFragment1"); 
       ft.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_FADE); 
       ft.commit(); 
      } 
     } 

    } 
} 
} 

и фрагмент,

public class WebViewFragment extends Fragment { 

String mURL = ""; 
String url; 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    Log.v("DetailFragment", "onCreate()"); 
} 

@Override 
public void onActivityCreated(Bundle savedInstanceState) { 
    super.onActivityCreated(savedInstanceState); 
    Log.v("DetailFragment", "onActivityCreated()"); 
    if (savedInstanceState != null) { 
    mURL = savedInstanceState.getString("currentURL", ""); 
    } 
    if(!mURL.trim().equalsIgnoreCase("")){ 
    WebView myWebView = (WebView) getView().findViewById(R.id.wvWebView); 
    myWebView.getSettings().setJavaScriptEnabled(true); 
    myWebView.setWebViewClient(new MyWebViewClient()); 
    myWebView.loadUrl(mURL.trim()); 
    } 
} 

@Override 
public void onSaveInstanceState(Bundle outState) { 
    super.onSaveInstanceState(outState); 
    outState.putString("currentURL", mURL); 
} 

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
    Log.v("DetailFragment", "onCreateView()"); 
    url = getArguments().getString(WebViewActivity.BUNDLE_URL); 
    View view = inflater.inflate(R.layout.frag_webview, container, false); 
    return view; 
} 

public void setURLContent(String URL) { 
    mURL = URL; 
} 

public void updateURLContent(String URL) { 
    mURL = URL; 
    WebView myWebView = (WebView) getView().findViewById(R.id.wvWebView); 
    myWebView.getSettings().setJavaScriptEnabled(true); 
    myWebView.setWebViewClient(new MyWebViewClient()); 
    myWebView.loadUrl(mURL.trim()); 
} 

private class MyWebViewClient extends WebViewClient { 
    @Override 
    public boolean shouldOverrideUrlLoading(WebView view, String url) { 
      return false; 
    } 
} 
} 

У меня есть функция открытия main с помощью putextras, а затем передается фрагменту с помощью bundle.putstring(). Я просто путаюсь, где он должен загружать URL. Спасибо заранее!

ответ

1

Код выглядит хорошо. Вы должны переместить эту линию

getArguments().getString(WebViewActivity.BUNDLE_URL); 

внутри onActivityCreated, так как вы поместите URL, чтобы загрузить в скрепляйте Fragment «s, и передать его в myWebView.loadUrl

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