我正在尝试在我的 android 应用程序中生成一个代码作为字符串并将其保存到一个文本文件中。当您按下共享按钮时,应该从文本文件中读取代码并将其复制到剪贴板。我想我不了解有关活动/上下文的内容。当然,我阅读了有关它的文档,但我无法找出问题所在。希望你们能帮助我!FileSystem.javapackage 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.javapackage 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); }}
2 回答
慕盖茨4494581
TA贡献1850条经验 获得超11个赞
AppCompatActivity
仅为实际 UI 工作创建子类,您将在其中使用startActivity()
或开始该活动startActivityForResult()
。
将这些方法移动到真实的活动中,例如MainActivity
,并摆脱Share
和FileSystem
类。
眼眸繁星
TA贡献1873条经验 获得超9个赞
首先,您不应该扩展AppCompatActivity
forFileSystem
和Share
。
发生的事情是将openFileOutput
对象FileSystem
( this
) 作为上下文。实际上,它不算作单独的活动。
您可以按照 CommonWare 的建议删除类FileSystem
和Share
,并将它们的功能移动到MainActivity
. 或者您可以显式地context
从MainActivity
.
添加回答
举报
0/150
提交
取消