0

i have TextView like that:

 <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"
                        />

the problem is when i click on the link (if present) i hae this error:

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

i set this TextView with:

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

there is a way to startIntent when i click on link inside the TextVIew ?

UPDATE:

if i try not work..same error:

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;
                    }
                }
            }
        }
    }

and into the Activity i have:

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);
        }
DevOps85
  • 6,473
  • 6
  • 23
  • 42

3 Answers3

0

Add a flag to your intent like this:

intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
domi
  • 968
  • 1
  • 10
  • 18
  • i have no intent..i set only the TextView with mMessageView = (TextView) view.findViewById(R.id.content); mMessageView.setText(mMessage); – DevOps85 Jul 21 '15 at 10:08
  • for now i haven't set this method..because i think if i click in any part of the text it start the intent..but i want only if i click on the link inside the text – DevOps85 Jul 21 '15 at 10:10
  • You should set a click listener to your TextView. – domi Jul 21 '15 at 10:10
  • @AntonioBalduzzi check this: http://stackoverflow.com/questions/2734270/how-do-i-make-links-in-a-textview-clickable – domi Jul 21 '15 at 10:13
0

You need to set an onclicklistener for the textview, and inside the listener check if there is a url inside the textview. Then you have to make a new intent with:

Intent intent = new Intent(activity you want to start as a string);

Then call

startActivity(intent);

But you need to put the activity into your manifest.xml file for this to work.

0

Are you getting same problem if you don's use mContext that is

Intent myIntent = new Intent(Intent.ACTION_VIEW, Uri.parse("http://google.com"));
startActivity(myIntent);
Soham
  • 4,397
  • 11
  • 43
  • 71