如题,在android应用中,在一个TextView里面,对其中一部分文字建立相应,当点击这几个字时,跳转到另一个activity,要怎么实现啊??
如不明白问题,可以看一下android新浪微博里面,像“@某某某”这种就是蓝色文字部分,就是上面我说的这种情况,点击“@某某某”时,进入这个某某某人的资料界面。
请问,这一功能都涉及到哪些东东啊?从textview中的加链接(或动作什么的,反正能相应的东东),到发送请求到服务器,再到服务器传回数据,到新的activity接收数据,这一系列动作都涉及到哪些类啊?有没有具体的代码例子?
谢谢各位大大们啊!

解决方案 »

  1.   

    TextView是用来显示文本的,有时需要给TextView中的个别字设置为超链接,或者设置个别字的颜色、字体等,那就需要用到Spannable对象,可以借助Spannable对象实现以上设置myTextView = (TextView) this.findViewById(R.id.myTextView);    
                
            //创建一个 SpannableString对象   
            SpannableString sp = new SpannableString("这句话中有百度超链接,有高亮显示,这样,或者这样,还有斜体.");    
            //设置超链接   
            sp.setSpan(new URLSpan("http://www.baidu.com"), 5, 7,    
                    Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);    
            //设置高亮样式一   
            sp.setSpan(new BackgroundColorSpan(Color.RED), 17 ,19,Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);    
            //设置高亮样式二   
            sp.setSpan(new ForegroundColorSpan(Color.YELLOW),20,24,Spannable.SPAN_EXCLUSIVE_INCLUSIVE);      
            //设置斜体   
            sp.setSpan(new StyleSpan(android.graphics.Typeface.BOLD_ITALIC), 27, 29, Spannable.SPAN_EXCLUSIVE_INCLUSIVE);    
            //SpannableString对象设置给TextView   
            myTextView.setText(sp);    
            //设置TextView可点击   
            myTextView.setMovementMethod(LinkMovementMethod.getInstance());    试试吧 楼主!
      

  2.   

    谢谢1楼的回复,至于SpannableString 我有查到,到后面的一系列动作需要用到什么,能再说一下吗?现在点击文字要调用浏览器的,怎么去连接到自己的服务器,然后跳转到新的activity,然后加载服务器传过来的数据啊?
      

  3.   

    继承ClickableSpan类可自定义动作
      

  4.   

    package android.alex.clickabletext;import android.app.Activity;
    import android.os.Bundle;
    import android.text.SpannableString;
    import android.text.Spanned;
    import android.text.method.LinkMovementMethod;
    import android.text.style.ClickableSpan;
    import android.view.View;
    import android.view.View.OnClickListener;
    import android.widget.LinearLayout;
    import android.widget.TextView;
    import android.widget.Toast;public class ClickableText extends Activity {
      /** Called when the activity is first created. */
      private TextView mClickableText;
      @Override
      public void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
      LinearLayout layout = new LinearLayout(this);
      mClickableText = new TextView(this);
      mClickableText.setClickable(true);
      mClickableText.setTextSize(20);  layout.addView(mClickableText);
      setContentView(layout);
      mClickableText.setText(getClickableSpan());
      mClickableText.setMovementMethod(LinkMovementMethod.getInstance());
      }  private SpannableString getClickableSpan()
      {
      View.OnClickListener l = new View.OnClickListener(){
      @Override
      public void onClick(View v)
      {
      Toast.makeText(ClickableText.this, "Click Success", Toast.LENGTH_SHORT).show();
      }
      };  SpannableString spanableInfo = new SpannableString("This is a test, Click Me");
      int start = 16;
      int end = spanableInfo.length();
      spanableInfo.setSpan(new Clickable(l), start, end, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
      return spanableInfo;
      }
    }class Clickable extends ClickableSpan implements OnClickListener{
      private final View.OnClickListener mListener;  public Clickable(View.OnClickListener l){
      mListener = l;
      }  @Override
      public void onClick(View v){
      mListener.onClick(v);
      }
    }
    写的一个example,楼主试试
      

  5.   

    想要点击那几个字把相应的那几个字单独放到一个TextView里 加上    android:onClick="get"
        android:clickable="true"    在代码里写一个名为get的方法 方法里写你要做的连接服务器 和跳转就行
      

  6.   

    在xml中给控件配置一个id信息 在代码中通过ID可以找到这个控件  然后监听点击事件, 如果点击 则转跳activity
      

  7.   

    终于被我搞定了。共享出来吧。
    不要使用Clickablespan因为得不到子串。直接使用URLspan,在setspan的时候,把你要区分的string传进去,然后在点击的时候,使用getUrl就会得到不同的字串,从而区别开来了。
      

  8.   

    看看这篇文章的思路,Android使用TextView实现无下划线超链接
      

  9.   

    这为大神,你的问题解决了吗?能给个demo我吗,正在为此发愁呢、、
    感谢呀!![email protected]
      

  10.   

    这个http://www.2cto.com/kf/201109/106431.html可能会有帮助,不要忘记了在AndroidManifest下注册Activity哦~