如何从线程开始新的意图?

时间:2017-07-13 13:43:06

标签: java android listview android-intent

我正在尝试从扩展AsyncTask的类的onPostExecute函数中启动一个新的intent。该类与主活动类在同一个.java文件中编写,并在该主活动类的onCreate函数中执行。

public class AnnouncementsActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        // ...
        new GetAnnouncements().execute();
        // ...
    }

private class GetAnnouncements extends AsyncTask<Void, Void, Void> {
    ArrayList<HashMap<String, String>> announcementsList = null;
    ProgressDialog progressDialog;

    protected void onPostExecute(Void requestResult) {
        super.onPostExecute(requestResult);
        // ...
        announcementsListView.setAdapter(adapter);
        announcementsListView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
               Intent openInBrowserIntent = new Intent(AnnouncementsActivity.class, Uri.parse(announcementsList.get(position).get("link")));
            }
        });
        // ...
    }
}
}

我得到的错误是:

错误:没有为Intent(Class,Uri)构造函数找到合适的构造函数Intent.Intent(String,Uri)不适用(参数不匹配; Class不能转换为String)构造函数Intent.Intent(Context,Class)不是适用(参数不匹配;类不能转换为上下文)

我在这里做错了什么?

1 个答案:

答案 0 :(得分:0)

这是正确的方法:

    Intent i = new Intent(Intent.ACTION_VIEW);
    i.setData(Uri.parse(announcementsList.get(position).get("link")));
    startActivity(i);