【发布时间】:2019-07-22 17:23:38
【问题描述】:
我正在尝试在我的 android 应用程序中将代码生成为字符串并将其保存到文本文件中。当您按下共享按钮时,应从文本文件中读取代码并将其复制到剪贴板。
我想我不了解有关活动/上下文的内容。 当然,我阅读了有关它的文档,但我无法弄清楚问题所在。希望大家能帮帮我!
文件系统.java
package com.niclasjaksch.shoppinglist;
import android.content.Context;
import androidx.appcompat.app.AppCompatActivity;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
class FileSystem extends AppCompatActivity {
static String filename = "shoppinglist_code.txt";
void Create() {
try {
FileOutputStream fOut = openFileOutput(filename, Context.MODE_PRIVATE);
String str = Utility.randomString(10);
fOut.write(str.getBytes());
fOut.close();
} catch (IOException e) {
e.printStackTrace();
}
}
String Read() {
String result = "";
try {
FileInputStream fin = openFileInput(filename);
int c;
while( (c = fin.read()) != -1){
result += c;
}
fin.close();
} catch (Exception e) {
System.out.println("An error occurred.");
e.printStackTrace();
}
return result;
}
void Clear() {
try {
File dir = getFilesDir();
File file = new File(dir, filename);
file.delete();
} catch (Exception e) {
System.out.println("An error occurred.");
e.printStackTrace();
}
}
}
Share.java
package com.niclasjaksch.shoppinglist;
import android.content.ClipData;
import androidx.appcompat.app.AppCompatActivity;
class Share extends AppCompatActivity {
android.content.ClipboardManager clipboardManager = null;
FileSystem fs = new FileSystem();
void Share() {
String code = fs.Read();
if(code == "" || code == null) {
fs.Create();
code = fs.Read();
}
ClipData clipData = ClipData.newPlainText("Source Text", code);
clipboardManager.setPrimaryClip(clipData);
}
}
MainActivity.java
...
Share share = new Share();
...
@Override
public boolean onOptionsItemSelected(@NonNull MenuItem item) {
switch (item.getItemId()) {
case R.id.item_share:
share.Share();
return true;
default:
return super.onOptionsItemSelected(item);
}
}
在这一行中得到一个 NullPointerException:
FileOutputStream fOut = openFileOutput(filename, Context.MODE_PRIVATE);
【问题讨论】:
-
请也分享一下logcat,以便我们了解哪个变量被赋值为null。
标签: java android io nullpointerexception