Вы неправильно понимаете, как работают действия.
public class WriteUserData extends AppCompatActivity {
Вы расширяете класс Activity, поэтому WriteUserData
также является действием. В этом случае он должен называться так - WriteUserDataActivity
.
Однако, глядя на то, что вы здесь делаете:
WriteUserData saveScore = new WriteUserData();
Это не то, как вы должны использовать деятельность. Он должен быть создан с намерением и startActivity()
, см. Здесь:
https://developer.android.com/training/basics/firstapp/starting-activity
То, что вы хотели сделать, это переместить logi c для открытия файл в отдельном классе, чтобы избежать дублирования кода. Это здорово, но это должно быть не с действием. Вместо этого вы должны использовать класс Utils / Helper. Ваш класс не должен ничего расширять и должен иметь частный конструктор:
public class WriteUserDataUtils {
private WriteUserDataUtils() {
// utils classes shouldn't be instanced
}
...
}
После этого измените методы внутри него на static
:
public static void writeToFile(String data, String file) {
...
}
public static void saveFile(String fileName, String addText) {
...
}
Наконец, причина вы расширили Activity
, так это то, что вам нужно Context
для некоторых вещей (например, для открытия файлового потока). Это можно легко исправить, передав его в качестве параметра:
public static void writeToFile(String data, String file, Context context) {
OutputStreamWriter outputStreamWriter = new OutputStreamWriter(context.openFileOutput(file + ".txt", MODE_PRIVATE));
...
}
public static void saveFile(String fileName, String addText, Context context){
try {
File newFile = new File(context.getExternalFilesDir(null), fileName + ".txt");
...
}
После рефакторинга в класс utils вы можете вызвать его из операции следующим образом:
private static void bring(){
WriteUserDataUtils.saveFile("userdata", "ThisTextWork", this);
WriteUserDataUtils.writeToFile("ThisTextWorkToo", "aconfig", this);
}
Пусть я знаю, нужны ли вам дополнительные разъяснения.