单击textview中的不同链接时,需要路由到另一个活动

时间:2014-02-11 17:08:55

标签: java android xml textview

现在我有一个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很新。谢谢!

1 个答案:

答案 0 :(得分:0)

完成您要做的事情的最佳方法是使用片段。当用户点击某个项目时,检索您需要的任何数据,然后使用多种方式之一将数据传递给该片段。