在按钮上单击我正在从文件中读取一些信息,我需要在textview中显示它,这段代码可以在我使用布局的活动中工作,但如果我在不同的屏幕中,则相同的代码不会工作。
String sdcard = Environment.getExternalStorageDirectory().getAbsolutePath();
File file = new File(sdcard + "/Mult/","boardname.cfg");
//Read text from file
try {
BufferedReader br = new BufferedReader(new FileReader(file));
String line;
while ((line = br.readLine()) != null) {
Global.defaultboard = line;
}
TextView defaultboard = (TextView) findViewById(R.id.currentboard);
defaultboard.setText(Global.defaultboard);
}
catch (IOException e) {
//You'll need to add proper error handling here
}
finish();
有谁能看到什么错?如果我删除了行或者注释了textview的行,它就不会崩溃。
由于
MRC
行
我的解决方案是 - 我的值存储在一个全局变量中,所以我使用像这样的onResume()来刷新textview。
public void onResume()
{
super.onResume();
TextView defaultboard = (TextView) findViewById(R.id.currentboard);
defaultboard.setText(Global.defaultboard);
}
MRC
答案 0 :(得分:1)
您只能在主线程中运行时更新UI视图。如果你在不同的线程中执行操作,请使用活动的runOnUIThread方法传递一些执行实际工作的Runnable。
答案 1 :(得分:1)
嗯,每个活动都有自己的布局,因此您无法直接通过不同的活动更新项目。
答案 2 :(得分:1)
你有没有想过使用SharedPreferences?
为要在此课程中显示的文字创建一个字符串。
使用putString(“key”,value)将此字符串写入共享首选项。
在具有需要更新的TextView的活动中,将其初始化为无法获得NullPointerException的内容。然后从SharedPreferences加载字符串并从那里设置文本。
如果您希望能够动态设置它,可以在具有TextView的活动中创建updateText()方法来更改它,因为如果活动仍在运行,它将不会更新为onCreate ()未被调用。请务必检查它所处的状态,因为如果该活动当前不存在(已调用onDestroy()),您将获得另一个例外。
希望这会有所帮助。我发现SharedPreferences是我很多问题的答案。如果您需要帮助,请告诉我,我会尽力帮助您。
答案 3 :(得分:0)
行
我的解决方案是 - 我的值存储在一个全局变量中,所以我使用像这样的onresume来刷新textview
public void onResume()
{
super.onResume();
TextView defaultboard = (TextView) findViewById(R.id.currentboard);
defaultboard.setText(Global.defaultboard);
}
感谢大家的回答,我喜欢其中的一些想法,并且正在研究它们的工作原理!