Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/211.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java androidxml内部存储_Java_Android_Xml_Single Responsibility Principle_Open Closed Principle - Fatal编程技术网

Java androidxml内部存储

Java androidxml内部存储,java,android,xml,single-responsibility-principle,open-closed-principle,Java,Android,Xml,Single Responsibility Principle,Open Closed Principle,我试图在android中使用XML保存一些数据,以保存到设备的内部存储中 我想确保应用程序是按照开放/封闭和单一责任原则编写的。 因此,我可以轻松地在存储方法之间切换 -domain |---db |---|---appReader |---|---|---AppReader.java |---|---|---XMLAppReader.java |---|---appWriter |---|---|---AppWriter.java |---|---|---XMLAppWriter.java

我试图在android中使用XML保存一些数据,以保存到设备的内部存储中

我想确保应用程序是按照开放/封闭和单一责任原则编写的。 因此,我可以轻松地在存储方法之间切换

-domain
|---db
|---|---appReader
|---|---|---AppReader.java
|---|---|---XMLAppReader.java
|---|---appWriter
|---|---|---AppWriter.java
|---|---|---XMLAppWriter.java   
|---DBFacade.java
|---DBFacadeImpl.java
-MainActivity.java
这是我目前的结构


我现在面临的问题是,在每一个关于android和xml的教程中,他们都使用函数openFileOutputfilename,Context.Mode\u Append,我猜这是活动超类中的一个函数

我必须如何初始化我的FileOutputStream,并且仍然保持我的打开/关闭和单一责任原则不变

我应该将活动实例传递给XMLAppWriter构造函数吗?
这不会破坏单一责任原则吗?

您可以使用应用程序的上下文方法,而不是将活动实例作为参数传递,这不会违反单一责任原则

getApplicationContext().openFileOutput(name, mode);

我现在面临的问题是,在每一个关于android和xml的教程中,他们都使用函数openFileOutputfilename,Context.Mode_Append——当然不是每一个。我猜这是活动超类中的一个函数openFileOutput是上下文上的一个方法,活动继承自上下文。GetFileDir是上下文上的另一个方法,它返回一个文件对象,指向您可以在其中读取和写入应用程序内部存储的主要部分的文件。您是说我可以将上下文参数添加到我的XMLWriter构造函数中?我不知道。在地球上约70亿人中,你是唯一一个知道你的XMLWriter是什么、在使用什么、它向使用它的人公开了什么API等的人。呃,这个名字是不言自明的。它使用XML将数据保存到存储器中。我的问题清楚地说明了问题所在。我需要使用函数“openFileOutput..”,它是“Context”上的一个方法。我的XMLWriter是一个现有的类,它只实现AppWriter,也不扩展任何其他类。那么,添加一个上下文参数不会破坏SRP吗?这个名称是不言自明的-是的,但是这个名称没有记录实现或它的用法。我需要使用函数“openFileOutput..”,这是“Context”上的一个方法-不,您需要XMLWriter才能编写XML。这并不一定意味着使用openFileOutput,也不意味着XMLWriter必须是调用openFileOutput或GetFileDir的人。那么,添加上下文参数是否不会破坏SRP我知道,这和文件、字符串或布尔参数一样。这对我没有任何帮助,要使用“getApplicationContext”,我需要从扩展Activity类的类中调用它。你可以扩展android应用程序类,public YourApp extensed Application{/…},并使用getApplicationContext在应用程序中初始化。但您还需要在清单文件中指定应用程序名称。因此,在我的XMLAppWriter构造函数中,我需要使用openFileOutput的类。。。方法我需要调用getApplicationContext?是的,将getApplicationContext的结果作为XMLAppWriter构造函数的参数传递。XMLAppWriterContext上下文,然后是context.openFileOutput。。。