【问题标题】:Used BufferedReader...Why this code doesn't work at android? It works in Java使用 BufferedReader...为什么这段代码在 android 上不起作用?它在Java中工作
【发布时间】:2011-03-08 17:00:50
【问题描述】:

我想设置一个数组并从 txt 文件中输入一个单词。 (阶段.txt) 它适用于Java,但不适用于android... 当我使用 (System.out.println(stage[0][1]) 时,控制台显示字符串值。 但在 Android 中,当我使用

TextView show = new TextView; 
show= (TextView)findViewById(R.id.question); 
show.setText(stage[0][1]);

TextView 什么也没显示...怎么了?...请帮助...

String[][] stage = new String[2][3];
BufferedReader in = new BufferedReader(new FileReader("stage.txt"));
for(int i=0; i<2;i++)
{
    for(int j=0; j<3; j++)
    {
        stage[i][j]=in.readLine();
    }
}

in.close();

【问题讨论】:

  • 在数据/数据/mapacage/files 中的 DDMS
  • 尝试使用调试器——您可以准确地看到字符串被设置为什么,还可以查看 setText() 是否被您期望的字符串调用。

标签: android bufferedreader file-io


【解决方案1】:

您是否将 TextView 添加到您正在使用的布局中? 或者您是否在布局 XML 文件中定义了 TextView?然后你的代码 TextView show = new TextView;错了。

TextView 显示 = 新的 TextView; 应该 TextView show = new TextView(this);(在 Activity 中)。

您能提供之前的完整代码吗? 你得到什么错误?

更新: 我想知道您的文件是否在您的 SD 卡上(因为该路径)。您可以通过 Environment.getExternalStorageDirectory().getAbsolutePath() 访问 SD 卡以获取其根路径。

对于您的项目,将该行更改为:

BufferedReader br = new BufferedReader(new InputStreamReader(
                openFileInput("stage.txt")));

完整来源:

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    String[][] stage = new String[2][3];
    try {
        BufferedReader br = new BufferedReader(new InputStreamReader(
                openFileInput("stage.txt")));
        for(int i=0; i<2;i++)
        {
            for(int j=0; j<3; j++)
            {
                stage[i][j]=br.readLine();
            }
        }
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
    TextView question = (TextView) findViewById(R.id.question);
    question.setText(stage[0][1]); 
}

【讨论】:

  • 我用过/show= (TextView)findViewById(R.id.question); / 我的问题是 Sting[][] 阶段没有 Sting...
  • 您收到错误信息还是根本不显示任何内容?你之前设置过 setContentView(...) 吗?你的“stage.txt”在哪里?
  • stage.txt 在 SD 卡中...在 DDMS 中的 data/data/mypackcagename/files
  • 发布 stage.txt 文件的前 5 行。
【解决方案2】:

//假设二维数组被正确填充 //如果不尝试将txt文件放入您的资产文件夹并使用getAssets()

但无论如何 尝试这样做,看看是否有帮助。

Handler handler = new Handler();
handler.post(new Runnable()
{
    public void run()
    {
        question.setText(stage[0][1]);
    }
});

【讨论】:

    猜你喜欢
    • 2015-04-17
    • 2011-12-13
    • 2017-08-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-18
    相关资源
    最近更新 更多