Android中onResume中的文本视图未更新
我的代码我的文本视图有问题,当主活动恢复时它不会更新。基本上它有一个文本视图和一个按钮。当程序加载时,它从SharedReferences文件读取日期并设置textview文本。单击该按钮时,它将启动一个新活动,该活动具有一个日期选择器,允许您选择要保存在SharedReferences文件中的日期。当您单击“确定”或按“更新”活动上的“上一步”按钮时,如果文本视图已更改,我将尝试使用新日期更新文本视图,但每次运行onresume时,它都不会更新文本视图文本。我曾尝试使主线布局无效,以使其重新绘制,但这不起作用。我已尝试使用startactivityforresult启动活动,但即使在onactivityresult中处理textview更新时,这也不起作用 这是主类的代码:Android中onResume中的文本视图未更新,android,android-layout,textview,android-linearlayout,onresume,Android,Android Layout,Textview,Android Linearlayout,Onresume,我的代码我的文本视图有问题,当主活动恢复时它不会更新。基本上它有一个文本视图和一个按钮。当程序加载时,它从SharedReferences文件读取日期并设置textview文本。单击该按钮时,它将启动一个新活动,该活动具有一个日期选择器,允许您选择要保存在SharedReferences文件中的日期。当您单击“确定”或按“更新”活动上的“上一步”按钮时,如果文本视图已更改,我将尝试使用新日期更新文本视图,但每次运行onresume时,它都不会更新文本视图文本。我曾尝试使主线布局无效,以使其重新绘
public class ASMain extends Activity implements OnClickListener {
private LinearLayout llMain;
private TextView tvDate;
private Button btnDate;
private SharedPreferences spSettings;
private static final String SETTINGS_FILE = "MySettings";
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
llMain = (LinearLayout)findViewById(R.id.llMain);
tvDate = (TextView)findViewById(R.id.tvDate);
btnDate = (Button)findViewById(R.id.btnDate);
spSettings = getSharedPreferences(SETTINGS_FILE,0);
tvDate.setText(spSettings.getString("Date", "ERROR"));
btnDate.setOnClickListener(this);
}
@Override
protected void onResume() {
spSettings = getSharedPreferences(SETTINGS_FILE, 0);
tvDate.setText(spSettings.getString("Date", "ERROR"));
super.onResume();
}
@Override
public void onClick(View v) {
if (v.Id == R.id.btnDate)
{
Intent intent = new Intent(this, update.class);
startActivity(intent);
}
}
}
这是update.class代码:
public class update extends Activity implements OnClickListener {
private LinearLayout llUpdate;
private TextView tvLabel;
private DatePicker dpDate;
private Button btnOK;
private SharedPreferences spSettings;
private static final String SETTINGS_FILE = "MySettings";
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_update);
llUpdate = (LinearLayout) findViewById(R.id.llUpdate);
tvLabel = (TextView) findViewById(R.id.tvLabel);
dpDate = (DatePicker) findViewById(R.id.dpDate);
btnOK = (Button) findViewById(R.id.btnOK);
spSettings = getSharedPreferences(SETTINGS_FILE, 0);
String sTemp = spSettings.getString("Date", "01/01/2013");
dpDate.updateDate(Integer.parseInt(sTemp.substring(6, 9)), Integer.parseInt(sTemp.substring(0, 1)), Integer.parseInt(sTemp.substring(3, 4)));
btnOK.setOnClickListener(this);
}
@Override
public void onStop() {
SharedPreferences.Editor speSettings = spSettings.edit();
speSettings.putString("Date", String.valueOf(dpDate.getMonth()) + "/" + String.valueOf(dpDate.getDayOfMonth()) + "/" + String.valueOf(dpDate.getYear()));
speSettings.commit();
super.onStop();
}
@Override
public void onClick(View v) {
if (v.Id = R.id.btnOK)
{
this.finish();
}
}
}
如果我再次单击该按钮,文本视图将更新,但我对开始的意图所做的任何更改在我返回到主活动后都不会显示。从
活动返回后
从startActivityForResult()
开始,您需要在onActivityResult()中处理结果
不是onResume()
遵循以下示例:从
活动返回后,您需要在startActivityForResult()
中处理onActivityResult()
而不是onResume()
中的结果
按照这个例子:在您的onResume()中进行更改,如下所示
@Override
protected void onResume() {
spSettings = getSharedPreferences(SETTINGS_FILE, 0);
tvDate.setText(spSettings.getString("Date", "ERROR"));
super.onResume();
}
在您的onResume()中进行如下更改
@Override
protected void onResume() {
spSettings = getSharedPreferences(SETTINGS_FILE, 0);
tvDate.setText(spSettings.getString("Date", "ERROR"));
super.onResume();
}
对不起,我也试过了,我只是在这里输入代码时忘了留下ForResult。即使我只是使用startActivity(),它仍然不会在onResume()中更新好的,那么onResume会发生什么呢?您的文本视图是显示“错误”还是显示日期?也许您没有正确保存设置?在update.class中发布代码。您希望看到什么结果?一旦更新,它将正确显示存储在设置文件中的日期。我期望的结果是,在我更改启动意图后,textview将以新的日期更新。我现在正在打电话,但我一到电脑就会添加update.class代码。我还将更好地解释我的尝试。对不起,我也尝试过,我只是忘记了在这里键入代码时保留ForResult。即使我只是使用startActivity(),它仍然不会在onResume()中更新好的,那么onResume会发生什么呢?您的文本视图是显示“错误”还是显示日期?也许您没有正确保存设置?在update.class中发布代码。您希望看到什么结果?一旦更新,它将正确显示存储在设置文件中的日期。我期望的结果是,在我更改启动意图后,textview将以新的日期更新。我现在正在打电话,但我一到电脑就会添加update.class代码。我还将更好地解释我所做的尝试。该代码也不起作用,因为它从意图返回后仍不更新tectview该代码也不起作用,因为它从意图返回后仍不更新tectview只是提醒其他读者,如果不更新,请仔细检查TextView的可见性。您解决过这个问题吗?我也有类似的问题。textview必须随时间更新,但有时它只使用旧值。我可以在日志中看到onResume被调用,SharedReferences每次都会更新。提醒其他读者,如果不更新,请仔细检查TextView的可见性。你解决过这个问题吗?我也有类似的问题。textview必须随时间更新,但有时它只使用旧值。我可以在日志中看到onResume被调用,SharedReference每次都会更新。