单击网址

时间:2015-07-21 10:07:07

标签: android

我有像这样的TextView:

 <TextView
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:id="@+id/content"
                        android:layout_marginLeft="10dp"
                        android:layout_marginTop="10dp"
                        android:autoLink="web"
                        android:linksClickable="true"
                        android:textColor="#767675"
                        android:layout_toEndOf="@+id/imgAvatar"
                        android:layout_toRightOf="@+id/imgAvatar"
                        />

问题是当我点击链接(如果有的话)时,我有这个错误:

Calling startActivity() from outside of an Activity  context requires the FLAG_ACTIVITY_NEW_TASK flag

我将此TextView设置为:

  mMessageView = (TextView) view.findViewById(R.id.content);
            mMessageView.setText(mMessage);

当我点击TextVIew里面的链接时,有一种方法可以启动内容吗?

更新:

如果我尝试不工作..相同错误:

mMessageView.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {

                    Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse("www.google.it"));
                    intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
                    mContext.startActivity(intent);

                }
            });

UPDATE2:

public class TweetCard extends Card {

    private String mMessage;
    private String mTime;
    private String mImageUrl;
    private String mUser;

    private Context mContext;

    private NetworkImageView mImageVIew;
    private TextView mMessageView;
    private TextView mTimeView;
    private TextView mUserView;

    public TweetCard(Context context,String mMessage,String mTime,String mUser,
                       String mImageUrl) {

        super(context, R.layout.tweet_card_layout);

        this.mMessage = mMessage;
        this.mTime = mTime;
        this.mUser = mUser;
        this.mImageUrl = mImageUrl;
        this.mContext = context;



        init();

    }

    public TweetCard(Context context, int innerLayout) {
        super(context, innerLayout);
        //init();
    }

    private void init() {

        setSwipeable(false);

    }

    @Override
    public void setupInnerViewElements(ViewGroup parent, View view) {

        if (view != null) {




            mMessageView = (TextView) view.findViewById(R.id.content);
            mMessageView.setText(mMessage);


          //  mTimeView = (TextView) view.findViewById(R.id.text_time);
         //   mTimeView.setText(mTime);

          //  mUserView = (TextView) view.findViewById(R.id.text_user);
         //   mUserView.setText(mUser);

            mImageVIew =(NetworkImageView) view.findViewById(R.id.imgAvatar);
            mImageVIew.setDefaultImageResId(R.drawable.ic_twitter);
            mImageVIew.setImageUrl(mImageUrl, K9.getInstance().getImageLoader());


            TextView textView = (TextView) view.findViewById(R.id.text_suggested_card1);
            textView.setText(mUser + "   " + mTime);




        }








    }



    class SuggestedCardHeader extends CardHeader {

        private String mTitle;
        public SuggestedCardHeader(Context context,String titolo) {
            this(context, R.layout.carddemo_suggested_header_inner);
            this.mTitle = titolo;
        }

        public SuggestedCardHeader(Context context, int innerLayout) {
            super(context, innerLayout);
        }

        @Override
        public void setupInnerViewElements(ViewGroup parent, View view) {

            if (view != null) {
                TextView textView = (TextView) view.findViewById(R.id.text_suggested_card1);

                if (textView != null) {
                    textView.setText(mTitle);
                }
            }
        }
    }

    class SuggestedCardThumb extends CardThumbnail {

        public SuggestedCardThumb(Context context) {
            super(context);
        }

        @Override
        public void setupInnerViewElements(ViewGroup parent, View viewImage) {
            if (viewImage != null) {

                if (parent!=null && parent.getResources()!=null){
                    DisplayMetrics metrics=parent.getResources().getDisplayMetrics();

                    int base = 100;

                    if (metrics!=null){
                        viewImage.getLayoutParams().width = (int)(base*metrics.density);
                        viewImage.getLayoutParams().height = (int)(base*metrics.density);
                    }else{
                        viewImage.getLayoutParams().width = 200;
                        viewImage.getLayoutParams().height = 200;
                    }
                }
            }
        }
    }

进入我的活动:

TweetCard mCard = new TweetCard(this,mTweet.getMessage(),mTweet.getTime(),mTweet.getUser(),mTweet.getImage());
            cards.add(mCard);




        }

        CardArrayAdapter mCardArrayAdapter = new CardArrayAdapter(getApplicationContext(), cards);
        if (listView != null) {
            listView.setAdapter(mCardArrayAdapter);
        }

3 个答案:

答案 0 :(得分:0)

为您的意图添加一个标记,如下所示:

intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);

答案 1 :(得分:0)

您需要为textview设置onclicklistener,并在侦听器内检查textview中是否有url。然后你必须用:

创造一个新的意图
Intent intent = new Intent(activity you want to start as a string);

然后致电

startActivity(意向);

但是您需要将活动放入manifest.xml文件中以使其正常工作。

答案 2 :(得分:0)

如果您不使用mContext

,是否会遇到同样的问题
Intent myIntent = new Intent(Intent.ACTION_VIEW, Uri.parse("http://google.com"));
startActivity(myIntent);