我有一个关于在两个活动文件之间发送数据的问题。下面的代码是pdf viewer应用程序的一部分。
主要活动
private void init() {
lv_pdf = (ListView)findViewById(R.id.lv_pdf);
dir = new File(Environment.getExternalStorageDirectory().getAbsolutePath());
fn_permission();
lv_pdf.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
Intent intent = new Intent(MainActivity.this, PdfActivity.class);
intent.putExtra("position", i);
startActivity(intent);
Log.e("Position", i + "");
}
});
}
onItemClick()
方法使用PdfActivity.java
将主要活动的数据发送到第二个活动(putExtra
)。(&#39; position&#39;是pdf文件的索引)
第二项活动
private void init() {
pdfView = (PDFView)findViewById(R.id.pdfView);
position = getIntent().getIntExtra("position", 0);
File pdfFile = new File(Environment.getExternalStorageDirectory(),"PdfFile.pdf");
if (pdfFile.exists()) {
Uri path = Uri.fromFile(pdfFile);
Intent objIntent = new Intent(Intent.ACTION_VIEW);
objIntent.setDataAndType(path, "application/pdf");
objIntent.setFlags(Intent. FLAG_ACTIVITY_CLEAR_TOP);
startActivity(objIntent);
}
displayFromSdcard();
}
private void displayFromSdcard() {
pdfFileName = MainActivity.fileList.get(position).getName();
pdfView.fromFile(MainActivity.fileList.get(position))
.defaultPage(pageNumber)
.enableSwipe(true)
.swipeHorizontal(false)
.onPageChange(this)
.enableAnnotationRendering(true)
.onLoad(this)
.scrollHandle(new DefaultScrollHandle(this))
.load();
}
在第二项活动中,&#39;位置&#39;使用getintExtra()
方法获取数据,默认值为0. position
变量用于呈现pdf文件。
问题:
&#39;默认值0&#39;是第一个索引号。它表示SD卡上最后保存的文件。但是如果我在app chooser中点击pdf文件,无论点击哪个文件,最后保存的文件都会打开。
如何更改默认值以打开我点击的pdf文件?
以下代码是关于第二个活动文件的manifest.xml文件。
<activity
android:name=".PdfActivity"
android:screenOrientation="portrait"
android:parentActivityName=".MainActivity">
<meta-data
android:name="android.support.PARENT_ACTIVITY"
android:value="com.pdffilefromsdcard.MainActivity" />
<intent-filter >
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<data android:mimeType="application/pdf" />
</intent-filter>
</activity>
我尝试过的事情:
我做了一个额外的变量positionStr
,数据类型是字符串并将其放入文件路径,但是当我启动应用程序时,应用程序突然停止。
答案 0 :(得分:0)
您没有在代码中的任何位置使用kill
变量。代码行
position
始终获取相同的pdf文件,因此您应该将File pdfFile = new File(Environment.getExternalStorageDirectory(),"PdfFile.pdf");
参数适当地传递到此行以打开所需的文件。