我正在嘗試在我的 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
提交
取消