如何在 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));
我有这个片段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));