现在我有一个texview,它是通过从数据库中提取一个大段落来生成的。本段提供了概述,并且应该有多个链接到另一个视图。即,段落将说明如下:
Angry Birds is a fun app.
Flappy Birds is a frustrating app.
但是在数据库中,有一些内容:
[**Angry Birds**](/app_reviews/3326) is a fun app.
[**Flappy Birds**](/app_reviews/4458) is a frustrating app.
基本上,此段落将介绍不同的“应用”,当您点击应用名称时,它应该打开另一项活动,即对应用进行审核。段落中应用的名称应加下划线或其他颜色,如链接。
到目前为止,我得出的结论是,由于这是单个textview中的大段文本,我想在进入文本视图之前解析字符串并将href链接插入到其他活动中,将审阅ID传递给新视图。这是一种可行的方法吗?到目前为止,如果我包含新活动的链接并点击它,我会得到一个“不幸的是,已经停止工作”的消息。我认为它没有正确连接。
以下是我的AndroidManifest.xml文件的片段,其中包含我要链接到的活动:
<activity
android:name="com.myapp.myappname.AppReviewActivity"
android:label="@string/title_activity_app_review" >
<intent-filter>
<data android:host="linkreview" android:scheme="appreviewactivity" />
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
以下是我原始活动中的代码,其中我正在托管我的textview:
TextView categoryBlurb = (TextView)findViewById(R.id.categoryBlurb);
categoryBlurb.setText(Html.fromHtml("<html>This is an app link to <a href=\"appreviewactivity://linkreview?id=3326\">Angry birds</a><html>"));
categoryBlurb.setMovementMethod(LinkMovementMethod.getInstance());
这是AppReviewActivity.java代码:
public class AppReviewActivity extends BaseActivity {
private AppReview review;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_app_review);
Uri passedData = getIntent().getData();
if (passedData != null) {
String reviewIdString = passedData.getQueryParameter("id");
long reviewId = Long.valueOf(reviewIdString).longValue();
review = Main.database.FindOne(AppReview.class, "app_reviews", reviewId);
}
我在这里做错了吗?我对android很新。谢谢!
答案 0 :(得分:0)
完成您要做的事情的最佳方法是使用片段。当用户点击某个项目时,检索您需要的任何数据,然后使用多种方式之一将数据传递给该片段。