2013-07-05 158 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; 
    } 
} 
} 

我有它從主打開putextras的活動,然後通過bundle.putstring()傳遞給片段。我只是困惑它應該在哪裏加載網址。提前致謝!

回答

1

代碼看起來不錯。你必須移動這條線

getArguments().getString(WebViewActivity.BUNDLE_URL); 

onActivityCreated,因爲你把網址給Fragment的包內加載,並將它傳遞給myWebView.loadUrl