0

我正在使用下面的代码,其中 ListView 的 onClick 在浏览器中打开一个链接。有没有办法在自定义对话框或弹出窗口等一些吸引人的小型前台活动中打开同一个浏览器?有人试过吗?

public void onItemClick(AdapterView<?> parent, View view, int pos, long id) {
    Intent i = new Intent(Intent.ACTION_VIEW);
    i.setData(Uri.parse(listItems.get(pos).getLink()));

    activity.startActivity(i);

}

谢谢,提前

根据 Tarun Suggestion 编辑代码:

public class ListListener extends Activity implements OnItemClickListener {

// List item's reference
List<RssItem> listItems;
// Calling activity reference
Activity activity;

public ListListener(List<RssItem> aListItems, Activity anActivity) {
    listItems = aListItems;
    activity  = anActivity;
}

/**
 * Start a browser with url from the rss item.
 */
public void onItemClick(AdapterView<?> parent, View view, int pos, long id) {
    /*Intent i = new Intent(Intent.ACTION_VIEW);
    i.setData(Uri.parse(listItems.get(pos).getLink()));
    activity.startActivity(i);*/
    AlertDialog.Builder alert = new AlertDialog.Builder(ListListener.this);

    alert.setTitle("Title here");
    WebView wv = new WebView(this);

    wv.loadUrl(listItems.get(pos).getLink()); 

    wv.setWebViewClient(new WebViewClient()
    {
        @Override
        public boolean shouldOverrideUrlLoading(WebView view, String url)
        {
            view.loadUrl(url);

            return true;
        }
    });

    alert.setView(wv);
    alert.setNegativeButton("Close", new DialogInterface.OnClickListener()
    {
        @Override
        public void onClick(DialogInterface dialog, int id)
        {
        }
    });
    alert.show();

}

}

错误 :

07-22 13:18:43.465:E/AndroidRuntime(22759):致命异常:主要 07-22 13:18:43.465:E/AndroidRuntime(22759):java.lang.NullPointerException 07-22 13:18:43.465: E/AndroidRuntime(22759): 在 android.content.ContextWrapper.getApplicationInfo(ContextWrapper.java:139) 07-22 13:18:43.465: E/AndroidRuntime(22759): 在 android.view.ContextThemeWrapper.getTheme(ContextThemeWrapper.java :65) 07-22 13:18:43.465: E/AndroidRuntime(22759): 在 android.app.AlertDialog.resolveDialogTheme(AlertDialog.java:142) 07-22 13:18:43.465: E/AndroidRuntime(22759):在 android.app.AlertDialog$Builder.(AlertDialog.java:359) 07-22 13:18:43.465: E/AndroidRuntime(22759): 在 com.itcuties.multicategoryrssreader.listeners.ListListener.onItemClick(ListListener.java:43 ) 07-22 13:18:43.465: E/AndroidRuntime(22759): 在 android.widget.AdapterView。performItemClick(AdapterView.java:298) 07-22 13:18:43.465: E/AndroidRuntime(22759): 在 android.widget.AbsListView.performItemClick(AbsListView.java:1283) 07-22 13:18:43.465: E/ AndroidRuntime(22759): 在 android.widget.AbsListView$PerformClick.run(AbsListView.java:3074) 07-22 13:18:43.465: E/AndroidRuntime(22759): 在 android.widget.AbsListView$1.run(AbsListView. java:4147) 07-22 13:18:43.465: E/AndroidRuntime(22759): 在 android.os.Handler.handleCallback(Handler.java:615) 07-22 13:18:43.465: E/AndroidRuntime(22759) : 在 android.os.Handler.dispatchMessage(Handler.java:92) 07-22 13:18:43.465: E/AndroidRuntime(22759): 在 android.os.Looper.loop(Looper.java:137) 07-22 13:18:43.465: E/AndroidRuntime(22759): 在 android.app.ActivityThread.main(ActivityThread.java:4898) 07-22 13:18:43.465: E/AndroidRuntime(22759): 在 java.lang.reflect .Method.invokeNative(Native Method) 07-22 13:18:43.465: E/AndroidRuntime(22759): at java.lang.reflect.Method.invoke(Method.java:511) 07-22 13:18:43.465: E /AndroidRuntime(22759): 在 com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1008) 07-22 13:18:43.465: E/AndroidRuntime(22759): 在 com.android.internal。 os.ZygoteInit.main(ZygoteInit.java:775) 07-22 13:18:43.465: E/AndroidRuntime(22759): at dalvik.system.NativeStart.main(Native Method)18:43.465:E/AndroidRuntime(22759):在 dalvik.system.NativeStart.main(本机方法)18:43.465:E/AndroidRuntime(22759):在 dalvik.system.NativeStart.main(本机方法)

4

1 回答 1

1
AlertDialog.Builder alert = new AlertDialog.Builder(this);

    alert.setTitle("Title here");
    WebView wv = new WebView(this);

    wv.loadUrl("http:\\www.google.com");

    wv.setWebViewClient(new WebViewClient()
    {
        @Override
        public boolean shouldOverrideUrlLoading(WebView view, String url)
        {
            view.loadUrl(url);

            return true;
        }
    });

    alert.setView(wv);
    alert.setNegativeButton("Close", new DialogInterface.OnClickListener()
    {
        @Override
        public void onClick(DialogInterface dialog, int id)
        {
        }
    });
    alert.show();
于 2013-07-22T05:21:45.720 回答