Oha*_*had 5 android android-webview android-fragments android-viewpager android-activity
我有一个 ViewPager,里面有几个片段,其中一个包含一个 webview。在该 WebView 中,我想在我用来显示图像的指定活动中打开图像 (jpeg/png) 的链接:
MyFragment.java
webView.setWebViewClient(new WebViewClient() {
public void startImageView(String url) {
Intent imageIntent = new Intent(getActivity(), ImageActivity.class);
imageIntent.putExtra(ImageActivity.IMAGE_URL, Uri.parse(url));
startActivity(imageIntent);
}
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url){
if (url.toLowerCase().endsWith(".png") || url.toLowerCase().endsWith(".jpg") || url.toLowerCase().endsWith(".jpeg")) {
startImageView(url);
} else {
view.loadUrl(url);
}
return false;
}
});
Run Code Online (Sandbox Code Playgroud)
ImageActivity.java
public class ImageActivity extends ActionBarActivity {
@Override
public void onCreate(Bundle savedInstanceState) {
requestWindowFeature(Window.FEATURE_INDETERMINATE_PROGRESS);
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_image_full_size);
...
}
Run Code Online (Sandbox Code Playgroud)
AndroidManifest.xml
...
<activity
android:name="com.example.main.ImageActivity"
android:label="Picture"
android:screenOrientation="portrait"
>
</activity>
...
Run Code Online (Sandbox Code Playgroud)
当我单击网络视图内的图像链接时,图像活动确实会加载。但是,活动会加载到片段内,而不是在新窗口中打开(就像活动通常所做的那样)。当我从另一个活动(而不是如上所述的 Web 视图内)启动此活动时,该活动将按预期在新窗口中打开。从 WebView 启动时如何在新窗口中打开 ImageActivity 有什么想法吗?
你说的这种情况在安卓上是不可能的。startActivity永远不会在“片段内部”渲染活动。因此,一旦排除了不可能的事情,剩下的无论多么不可能,都一定是事实。
if (url.toLowerCase().endsWith(".png") || url.toLowerCase().endsWith(".jpg") || url.toLowerCase().endsWith(".jpeg")) {
startImageView(url);
} else {
view.loadUrl(url);
}
Run Code Online (Sandbox Code Playgroud)
您的 if 语句很可能进入 ELSE 部分,因此 WebView 正在加载图像。
您是否有您加载的图像的 url 示例 - 也许将日志添加到此 if else 语句中。
您的图像上有查询参数吗?即实际上是网址吗www.foo.com/bar/image.png?w=300h=300?因此endsWith不会起作用。尝试改成这样:url.toLowerCase().contains(".png")
IE
String candidateUrl = url.toLowerCase();
if (candidateUrl.contains(".png")
|| candidateUrl.contains(".jpg")
|| candidateUrl.contains(".jpeg")) {
Log.d("MyTag", "Start a new activity for: " + url);
startImageView(url);
} else {
Log.d("MyTag", "Load inside webview " + url);
view.loadUrl(url);
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
863 次 |
| 最近记录: |