android:如何从超链接调用方法

时间:2015-11-29 20:46:46

标签: android

我试图在android编程中单击超链接并调用方法...

但问题是,链接没有显示,方法也没有被调用。如何实现这一结果?

我基本上是一个javascript / jsp开发人员,这是我的第一个Android应用程序,我正在学习。因此,我试图点击链接和调用方法与参数....

enter image description here

结果看起来像enter image description here

Java代码

private class CallAPI extends AsyncTask<String, String, String> {

    private String Content;
    @Override
    protected String doInBackground(String... params) {
      String urlString=params[0]; // URL to call
      String resultToDisplay = "";
      InputStream in = null;
      emailVerificationResult result = null;

      // HTTP Get
      try {
        URL url = new URL(urlString);
        HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection();
        in = new BufferedInputStream(urlConnection.getInputStream());
        System.out.println("test");
          BufferedReader reader = null;
          // Get the server response
          reader = new BufferedReader(new InputStreamReader(urlConnection.getInputStream()));
          StringBuilder sb = new StringBuilder();
          String line = null;
          // Read Server Response
          while ((line = reader.readLine()) != null) {
              // Append server response in string
              sb.append(line + "\n");
          }
          // Append Server Response To Content String
          Content = sb.toString();
      } catch (Exception e ) {
        System.out.println(e.getMessage());
        return e.getMessage();
      }
        /****************** Start Parse Response JSON Data *************/
        String OutputData = "<center><b><u>Weight Training</u></b></center><br/><br/>";
        JSONObject jsonResponse;
        try {
            /****** Creates a new JSONObject with name/value mappings from the JSON string. ********/
            jsonResponse = new JSONObject(Content);
            /***** Returns the value mapped by name if it exists and is a JSONArray. ***/
            /*******  Returns null otherwise.  *******/
            JSONArray jsonMainNode = jsonResponse.optJSONArray("articleList");
            /*********** Process each JSON Node ************/
            int lengthJsonArr = jsonMainNode.length();
            for (int i = 0; i < lengthJsonArr; i++) {
                /****** Get Object for each JSON node.***********/
                JSONObject jsonChildNode = jsonMainNode.getJSONObject(i);
                /******* Fetch node values **********/
                String name = jsonChildNode.optString("menu_name").toString();
                String number = jsonChildNode.optString("id").toString();
                String date_added = jsonChildNode.optString("parent_id").toString();

                OutputData += "  " +
                        String.format("<a  onClick='verifyEmail("+number+","+date_added+")'><b>"+name+"<b> "+ number+" "+ date_added+"</a> ") +"<br/><br/>";
            }
            /****************** End Parse Response JSON Data *************/ 
            /* Show Parsed Output on screen (activity) */
        } catch (JSONException e) {
            e.printStackTrace();
        } catch (Exception e) {
            e.printStackTrace();
        }
        resultToDisplay =OutputData ;
       return resultToDisplay;

    }
    // This is the method that is called when the submit button is clicked
    public void verifyEmail(String m,String p) {
        String urlString = apiURL + "mid=" + m + "&pid=" + p;
        new CallAPI().execute(urlString);
    }


    protected void onPostExecute(String result) {
        Intent intent = new Intent(getApplicationContext(), ResultActivity.class); 
        intent.putExtra(EXTRA_MESSAGE, result);
        startActivity(intent);
    }

Update: 我可以放置一个按钮并提供click方法并将参数传递给方法

,而不是链接

1 个答案:

答案 0 :(得分:1)

(谢天谢地)你不能在android中使用HTML标签调用函数。而是尝试在TextView上设置ClickableSpan以获得所需的效果

SpannableString ss = new SpannableString("Click Me to do magic");
ClickableSpan clickableSpan = new ClickableSpan() {
    @Override
    public void onClick(View textView) {
        doSomeMagic();
    }
    @Override
    public void updateDrawState(TextPaint ds) {
        super.updateDrawState(ds);
    }
};

// apply the clickable span on "Click Me" part which is on index 0 -> 7
// 8 is used because it goes from a -> b-1
ss.setSpan(clickableSpan, 0, 8, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
TextView textView = (TextView) findViewById(R.id.foo);
textView.setText(ss);