我有像这样的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);
}
答案 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);