GVKun编程网logo

Android:点击网页视图中的网页链接(android 显示网页)

40

本文的目的是介绍Android:点击网页视图中的网页链接的详细情况,特别关注android显示网页的相关信息。我们将通过专业的研究、有关数据的分析等多种方式,为您呈现一个全面的了解Android:点击

本文的目的是介绍Android:点击网页视图中的网页链接的详细情况,特别关注android 显示网页的相关信息。我们将通过专业的研究、有关数据的分析等多种方式,为您呈现一个全面的了解Android:点击网页视图中的网页链接的机会,同时也不会遗漏关于android webview 如何监听网页中的点击按钮、android – 如何在列表视图中使项目可点击?、android – 如何打开新的活动点击列表视图中的项目?、android – 当我点击特定视图时,如何在列表视图中获取项目的位置?的知识。

本文目录一览:

Android:点击网页视图中的网页链接(android 显示网页)

Android:点击网页视图中的网页链接(android 显示网页)

我在 android web视图中包含了一个web应用程序,并且在网页上有一个链接打开了其他一些网站,当点击链接时,第一次点击就可以正常工作,但是当第二次点击时没有找到网站,

代码是:

@Override
public boolean shouldOverrideUrlLoading(WebView view,String url) {

    if (url.contains("some site ")) {
     Intent i = new
         Intent(Intent.ACTION_VIEW,Uri.parse(url)); 
     startActivity(i);
         return true;
    } else {
    view.loadUrl(url);
    return false;
   }
}

@THelper和@mikegr,谢谢你的回复,

实际上在我的情况下我在我的网络应用程序中有一个模式面板(JSF),其中包含一些按钮,点击按钮我打开一些其他网站使用javascript window.open()方法在桌面浏览器中正常工作,但是,当我在web webview中包装这个web应用程序,一切正常,除非我第一次单击此按钮我可以使用外部浏览器打开其他站点,但是在第二次单击时webview尝试在webview中打开此otherite而不是外部浏览器,我得到的网站没有找到其他网站的整个网址,即使我注销并再次登录,因为启动的应用程序仍在运行,这种情况会发生.

在我的情况下,当应用程序空闲时,我得到黑屏.

我浏览网络并发现了simillar问题,但这也没有帮助,这里是链接:

http://groups.google.com/group/android-for-beginners/browse_thread/thread/42431dd1ca4a9d98

handling links in a webview,

任何帮助和想法对我都非常有帮助,这对我来说太长了

因为我试图在Web视图中显示我的Web应用程序,所以我只有一个活动,其中包含这样的代码

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);

if (savedInstanceState != null) {
        // so that when launcher is clicked while the application is 
           // running,the application doesn''t start from the begnining
} else {

    requestwindowFeature(Window.FEATURE_NO_TITLE);
    setContentView(R.layout.main);

    // Show the ProgressDialog on this thread
        this.progressDialog = ProgressDialog.show(this,"Pleas Wait..","Loading",true);

    browser = (WebView) findViewById(R.id.webview);
    browser.getSettings().setJavaScriptEnabled(true);

    browser.setWebViewClient(new WebViewClient() {

        public void onPageFinished(WebView view,String url) {
                Log.i(TAG,"Finished loading URL: " +url);

                if (progressDialog.isShowing()) {
                    progressDialog .dismiss();
                }
            }


@Override
public boolean shouldOverrideUrlLoading(WebView view,String url) {

if (url.contains("some site")) {
     Intent i = new
     Intent(Intent.ACTION_VIEW,Uri.parse(url)); 
     startActivity(i);
             return true;
} else {
        view.loadUrl(url);
    return true;
}
 }
});
browser.loadUrl("mysite");
}
}

解决方法

我有过在某些情况下不调用shouldOverrideUrlLoading()的经验.
有关此主题的一些错误
http://code.google.com/p/android/issues
像错误编号15827,9122,812,2887

作为一种解决方法,尝试添加方法onPageStarted()并检查是否接到此调用.对我来说,即使之前未调用shouldOverrideUrlLoading(),也始终会调用此方法.

android webview 如何监听网页中的点击按钮

android webview 如何监听网页中的点击按钮

比如,随便一个网址,上面有个点击按钮A

在手机上运行一个客户端,利用webview把这个网址加载进来,我现在点击这个按钮A

请问,webview有没有办法监控到我点击了这个按钮,而不是点击网页其他地方?

android – 如何在列表视图中使项目可点击?

android – 如何在列表视图中使项目可点击?

我一直在努力寻找解决方案,但收效甚微.
我必须显示一个包含项目列表的弹出窗口.
我能够显示窗口,但单击列表视图中的项目时未调用onitemclicklistener.任何有关此问题的帮助将不胜感激.

谢谢

EDIT1:

public class PopUpWindowActivity extends Activity {

    /** Called when the activity is first created. */
    String[] countries = new String[] {
        "India","USA","Canada"
    };

    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        LinearLayout ll = new LinearLayout(this);
        ListView lv = new ListView(this);
        lv.setAdapter(new ArrayAdapter < String > (this,android.R.layout.simple_list_item_1,countries));
        lv.setonItemClickListener(new OnItemClickListener() {

                public void onItemClick(AdapterView <? > arg0,View arg1,int arg2,long arg3) {
                    Log.v("clicked",(String)((TextView) arg1).getText());
                }

            });
        ll.addView(lv);
        setContentView(ll);
    }
}

在上面的代码中,我试图创建一个布局,其中我添加了一个列表视图.这使列表视图不再可单击.我必须这样做因为,我正在尝试实现一个弹出窗口,其中应该有多个项目以及列表视图.

解决方法

编辑答案

申请此样本请为您工作我已经测试了此代码

//ListviewActivity.java

package com.anl.lk;

 public class ListviewActivity extends ListActivity { 

     static final String[] COUNTRIES = new String[] {

         "Afghanistan","Albania","Algeria","American Samoa","Andorra","Angola","Anguilla","Antarctica","Antigua and Barbuda","Argentina","Armenia","Aruba","Australia","Austria","Azerbaijan","Bahrain","Bangladesh","Barbados","Belarus","Belgium","Belize","Benin","Bermuda","Bhutan","Bolivia","Bosnia and Herzegovina","Botswana","Bouvet Island","Brazil","British Indian Ocean Territory"
     };

     /** Called when the activity is first created. */
     @Override
     public void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
         setlistadapter(new ArrayAdapter < String > (this,COUNTRIES));
         getListView().setTextFilterEnabled(true);
     }

     @Override
     protected void onListItemClick(ListView l,View v,int position,long id) {
         // Todo Auto-generated method stub
         super.onListItemClick(l,v,position,id);

         new AlertDialog.Builder(this)
             .setTitle("Hello")
             .setMessage("from " + getListView().getItemAtPosition(position))
             .setPositiveButton("OK",new DialogInterface.OnClickListener() {
                 public void onClick(DialogInterface dialog,int which) {}
             })
             .show();

         Toast.makeText(ListviewActivity.this,"ListView: " + l.toString() + "\n" +
             "View: " + v.toString() + "\n" +
             "position: " + String.valueOf(position) + "\n" +
             "id: " + String.valueOf(id),Toast.LENGTH_LONG).show();
     }

 }

//第一页

package com.anl.lk;

public class FirstPage extends Activity {

    @override
    protected void onCreate(Bundle savedInstanceState) {
        // Todo Auto-generated method stub
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        Button b = (Button) findViewById(R.id.button1);
        b.setonClickListener(new OnClickListener() {

                public void onClick(View v) {
                    // Todo Auto-generated method stub
                    Intent sam = new Intent(FirstPage.this,ListviewActivity.class);
                    startActivity(sam);

                }
            });
    }
}

//清单文件

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.anl.lk"
android:versionCode="1"
android:versionName="1.0" >

<uses-sdk android:minSdkVersion="8" />

<application
    android:icon="@drawable/ic_launcher"
    android:label="@string/app_name" >
    <activity
        android:label="@string/app_name"
        android:name=".FirstPage" >
        <intent-filter >
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
    <activity android:name=".ListviewActivity"    android:theme="@android:style/Theme.Dialog"></activity>
</application>

请使用此代码,它有您的解决方案

android – 如何打开新的活动点击列表视图中的项目?

android – 如何打开新的活动点击列表视图中的项目?

我无法在列表视图中的项目上点击新的活动.我想要onItemClick可以打开ApkInfoActivity ..其实当我点击没有发生.
protected void onItemClick(ListView l,View v,int position,long id,AdapterView<?> parent) {
        super.onListItemClick(l,v,position,id);

       final ApplicationInfo app = applist.get(position);

       PackageInfo packageInfo = (PackageInfo) parent.getItemAtPosition(position);

       AppDataActivity appData = (AppDataActivity) getApplicationContext();
       appData.setPackageInfo(packageInfo);

       Intent appInfo = new Intent(getApplicationContext(),ApkInfoActivity.class);
       startActivity(appInfo);

    }

我找不到问题.我如何解决?

使用logcat编辑:

10-29 17:14:07.710: E/AndroidRuntime(3535): FATAL EXCEPTION: main
10-29 17:14:07.710: E/AndroidRuntime(3535): java.lang.classCastException: android.content.pm.ApplicationInfo cannot be cast to android.content.pm.PackageInfo
10-29 17:14:07.710: E/AndroidRuntime(3535):     at com.dd.application.MainActivity.onItemClick(MainActivity.java:369)
10-29 17:14:07.710: E/AndroidRuntime(3535):     at android.widget.AdapterView.performItemClick(AdapterView.java:297)
10-29 17:14:07.710: E/AndroidRuntime(3535):     at android.widget.AbsListView.performItemClick(AbsListView.java:1149)
10-29 17:14:07.710: E/AndroidRuntime(3535):     at android.widget.AbsListView$PerformClick.run(AbsListView.java:2939)
10-29 17:14:07.710: E/AndroidRuntime(3535):     at android.widget.AbsListView$2.run(AbsListView.java:3622)
10-29 17:14:07.710: E/AndroidRuntime(3535):     at android.os.Handler.handleCallback(Handler.java:730)
10-29 17:14:07.710: E/AndroidRuntime(3535):     at android.os.Handler.dispatchMessage(Handler.java:92)
10-29 17:14:07.710: E/AndroidRuntime(3535):     at android.os.Looper.loop(Looper.java:137)
10-29 17:14:07.710: E/AndroidRuntime(3535):     at android.app.ActivityThread.main(ActivityThread.java:5323)
10-29 17:14:07.710: E/AndroidRuntime(3535):     at java.lang.reflect.Method.invokeNative(Native Method)
10-29 17:14:07.710: E/AndroidRuntime(3535):     at java.lang.reflect.Method.invoke(Method.java:525)
10-29 17:14:07.710: E/AndroidRuntime(3535):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:743)
10-29 17:14:07.710: E/AndroidRuntime(3535):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:559)
10-29 17:14:07.710: E/AndroidRuntime(3535):     at dalvik.system.NativeStart.main(Native Method)

解决方法

用这个做你的工作
list.setonItemClickListener(new AdapterView.onItemClickListener() {
   @Override
   public void onItemClick(AdapterView<?> adapter,View view,long arg) {
      Intent appInfo = new Intent(YourActivity.this,ApkInfoActivity.class);
       startActivity(appInfo);
   } 
});

android – 当我点击特定视图时,如何在列表视图中获取项目的位置?

android – 当我点击特定视图时,如何在列表视图中获取项目的位置?

正如标题所示,当我点击项目内的视图时,我想知道项目的确切位置.

假设我在ArrayAdapter的getView()方法中有以下代码:

...
holder = new ViewHolder ();
holder.iconAction = (ImageView)convertView.findViewById (R.id.download_item_iconAction);
holder.iconAction.setonClickListener (new View.OnClickListener(){
    @Override
    public void onClick (View v){
        //Item X is clicked
    }
});
...

在onClick()中,我知道点击的视图,v,但我不知道项目的位置.
我们来做个伎俩.当getView()创建视图时,我将在ViewHolder中保存位置:

public View getView (int position, View convertView, ViewGroup parent){
    ViewHolder holder;
    if (convertView == null){
        holder = new ViewHolder ();
        holder.iconAction = (ImageView)convertView.findViewById (id);
        holder.iconAction.setonClickListener (new View.OnClickListener(){
            @Override
            public void onClick (View v){
                int pos = (Integer)v.getTag ();
            }
        });
        holder.iconWait.setTag (position);

        ...
    }else{
        holder = (ViewHolder)convertView.getTag ();
    }

    ...
}

此代码有效……但并非总是如此.如果必须滚动列表以查看视图被回收的所有项目.假设列表有10个元素,只有5个可见(可见意味着:如果我们看到一个项目的1个像素行,则此项目可见).现在,如果我们向下滚动,我们将看到第六个元素,但第一个(0)仍然可见.我们滚动一点,第一个元素将被隐藏,我们将看到第七个元素出现,但是这个新元素的视图是第一个元素(0)的视图.所以我保存位置:0,1,2,3,4和5.第七个元素(6)将保存位置0:错误.
获取单击回调的另一种方法是使用ListView的OnItemClickListener侦听器:

listView = getListView ();
listView.setonItemClickListener (new AdapterView.OnItemClickListener(){
    @Override
    public void onItemClick (AdapterView<?> parentView, View childView, int position, long id){
        ...
    }
});

如果我向下滚动,我会得到确切的位置,但是通过这种方式,我会在单击项目时收到回调,无论点击的子视图如何.
谢谢.

解决方法:

你几乎就在那里,你需要做的就是在if / else子句之后设置标签.这是为了确保在回收视图时以及从new创建视图时更新标记.

例如

    if (convertView == null){
        holder = new ViewHolder ();
        ...
    }else{
        holder = (ViewHolder)convertView.getTag ();
    }
 holder.iconWait.setTag (position);

今天关于Android:点击网页视图中的网页链接android 显示网页的介绍到此结束,谢谢您的阅读,有关android webview 如何监听网页中的点击按钮、android – 如何在列表视图中使项目可点击?、android – 如何打开新的活动点击列表视图中的项目?、android – 当我点击特定视图时,如何在列表视图中获取项目的位置?等更多相关知识的信息可以在本站进行查询。

本文标签: