这是我第一次来这里,所以我有点紧张,请原谅我,如果我似乎并不完全清楚我在问什么。
问题是,我试图使用我在单独的类中创建的方法从assets文件夹中的子文件夹中读取文件。我已经研究了几天,但我无法在任何地方找到解决方案,所以我作为最后的手段来到这里。我需要将文件读取方法分开,因为有其他视图/活动将使用完全相同的方法,我不认为为每个活动复制和粘贴相同的代码是明智的。好了,到目前为止我做了什么:
public class ReadAssets extends Activity {
public void read(Context context, String filepath, int textviewid) {
try {
InputStream input = getAssets().open(filepath);
int size = input.available();
// Read the entire asset into a local byte buffer.
byte[] buffer = new byte[size];
input.read(buffer);
input.close();
// Convert the buffer into a string.
String text = new String(buffer);
// Finally insert the string into the text view.
TextView tv = (TextView) findViewById(textviewid);
tv.setText(text);
} catch (IOException e) {
// Throws an exception if an error is found
throw new RuntimeException(e);
}
}
}
我想将此方法放入的活动:
public class GeneralSetupActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.gettingstarted_layout);
ReadAssets nA = new ReadAssets();
nA.read(this,"gettingstarted/GettingStarted.txt", R.id.displayTextView);
// try {
// InputStream input =getAssets().open("gettingstarted/GettingStarted.txt");
//
// int size = input.available();
//
// // Read the entire asset into a local byte buffer.
// byte[] buffer = new byte[size];
// input.read(buffer);
// input.close();
//
// // Convert the buffer into a string.
// String text = new String(buffer);
//
// // Finally insert the string into the text view.
// TextView tv = (TextView) findViewById(R.id.displayTextView);
// tv.setText(text);
//
// } catch (IOException e) {
// // Throws an exception if an error is found
// throw new RuntimeException(e);
// }
}
}
我真的很感激有人可以指出我正确的方向。而且我希望我没有利用,但我想知道我是如何一个接一个地导入和显示一系列文本文件的。
干杯伙伴, 谢谢:))
答案 0 :(得分:1)
如果你需要这个可用于所有不同类型的Activity,你应该考虑将该方法放在一个超类中,这样所有的孩子都可以使用它。
public class ExtraFunctionalActivity extends Activity
{
public void read(...)
{
//your code
}
}
public class GeneralSetupUtility extends ExtraFunctionalActivity
{
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.gettingstarted_layout);
read(this,"gettingstarted/GettingStarted.txt", R.id.displayTextView);
}
}
否则,如果一堆不相关的类需要这个方法,你可以把它放在一个实用程序类中;
public class FileUtil
{
public static void read(...)
{
//your code
}
}
然后您可以使用
在需要的地方调用它FileUtil.read(args here);
答案 1 :(得分:0)
你可能有一个类似Fileparsingutility的类,你想要分离的方法。您可以将Inputstream定义为参数(您可以将其他所需的东西作为该方法的参数传递)。您想要使用此方法的任何行为,实例化上面的类并通过传递参数来调用该方法。
Fileparinsgutility util = new Fileparsingutility(); Returnobj retObj = util.parse(......);