首先,我想为我糟糕的英语道歉,我来自斯洛伐克;)
所以有我的问题
我的朋友想要创建一个非常简单的翻译应用程序,非常非常简单。我们是Android的编程初学者,完全是java。问题是,我们的apk在Eclipse中运行良好,所以我们决定创建apk文件并将其安装在我们的设备中。因此,当我们安装它并且存在问题时,我们在设备中的apk不会读取文件在哪里是我们的话。所以我们在eclipse模拟器中再次尝试它并且也不起作用,但在创建apk之前它完全正常工作。我们的文件位于res / raw / dictionary
这是我们的代码
package com.example.dictionary;
import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;
public class MainActivity extends Activity {
TextView Vstup;
TextView Vystup;
Button presun;
String slovo;
String word;
String found;
Boolean click;
int i;
int j;
String sub;
String strf;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Vstup = (TextView)findViewById(R.id.editText1);
Vystup = (TextView)findViewById(R.id.textView2);
presun = (Button)findViewById(R.id.button1);
presun.setOnClickListener(new OnClickListener()
{
public void onClick(View v)
{
try
{
slovo = Vstup.getText().toString();
InputStream is = getResources().openRawResource(R.raw.dictionary);
InputStreamReader inputStreamReader = new InputStreamReader(is);
BufferedReader bufferedReader = new BufferedReader(inputStreamReader);
while((strf = bufferedReader.readLine()) != null)
{
i = strf.indexOf(":"); // vrati prvu poziciu retazca
j = strf.indexOf(",");
sub = strf.substring(0,i); //vyberie zo stringu podretazec od indexu 0 po i
if(slovo.equals(sub))
{
found = strf.substring(i+1,j);
word = ("Výstup: " + found);
Vystup.setText(word.toString());
}
else {
word = ("Výstup: Word not found");
Vystup.setText(word.toString());
}
}
bufferedReader.close();
}
catch(Exception e)
{
System.out.println(e);
}
}
});
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
}
错误logcat
error opening trace file: no such file or directory(2)
答案 0 :(得分:0)
getResources()。openRawResource()获取Android项目的res / raw /目录中的文件的InputStream。 openRawResource()的参数是一个名为R.raw。 filename 的int,其中<em> filename 是没有扩展名的文件的名称。
因此,该文件不在res / assets /目录中。
虽然您可以仔细检查您尝试阅读的文件实际上是res / raw,但我觉得您可以构建APK并获得R.raw。 filename 条目似乎很奇怪如果文件实际上不存在。我将使用调试器逐步执行代码并检查变量。