如何在 android 中的 button.onClick() 片段中使用 startActivity()

How can I use startActivity() inside a fragment in button.onClick() in android

我有这个片段http://prntscr.com/7xlkyy 当我单击“打开”按钮时,我想开始新的 activity,这将在

时打开 pdf 文件
@Override
public void onBindViewHolder(final PersonViewHolder personViewHolder, int i) {
    final int j = i;
    personViewHolder.pdfName.setText(pdfItems.get(j).name);
    personViewHolder.pdfSize.setText(pdfItems.get(j).size);
    personViewHolder.pdfPhoto.setImageResource(pdfItems.get(j).photoID);

    personViewHolder.open.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            File file = new File("/" + pdfItems.get(j).getName());
            PackageManager packageManager = v.getContext().getPackageManager();
            Intent testIntent = new Intent(Intent.ACTION_VIEW);
            testIntent.setType("application/pdf");
            List list = packageManager.queryIntentActivities(testIntent,
                    PackageManager.MATCH_DEFAULT_ONLY);
            if (list.size() > 0 && file.isFile()) {
                Intent intent = new Intent();
                intent.setAction(Intent.ACTION_VIEW);
                Uri uri = Uri.fromFile(file);
                intent.setDataAndType(uri, "application/pdf");
                // **startActivity(intent);**
            }
        }
    });
}

问题是它说 "cannot resolve method startActivity()",也说 "cannot resolve method getActivity()"

任何帮助..

使用:

((Activity)v.getContext()).startActivity(intent);

您可以像这样从 onClick 方法的 View 参数中获取上下文:

v.getContext().startActivity(i);

你的情况:

personViewHolder.open.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        File file = new File("/" + pdfItems.get(j).getName());
        PackageManager packageManager = v.getContext().getPackageManager();
        Intent testIntent = new Intent(Intent.ACTION_VIEW);
        testIntent.setType("application/pdf");
        List list = packageManager.queryIntentActivities(testIntent,
                PackageManager.MATCH_DEFAULT_ONLY);
        if (list.size() > 0 && file.isFile()) {
            Intent intent = new Intent();
            intent.setAction(Intent.ACTION_VIEW);
            Uri uri = Uri.fromFile(file);
            intent.setDataAndType(uri, "application/pdf");
            v.getContext().startActivity(intent);
        }
    }
}); 
getActivity().startActivity(new Intent(getActivity(), YourActivity.class));