Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/flash/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android中onResume中的文本视图未更新_Android_Android Layout_Textview_Android Linearlayout_Onresume - Fatal编程技术网

Android中onResume中的文本视图未更新

Android中onResume中的文本视图未更新,android,android-layout,textview,android-linearlayout,onresume,Android,Android Layout,Textview,Android Linearlayout,Onresume,我的代码我的文本视图有问题,当主活动恢复时它不会更新。基本上它有一个文本视图和一个按钮。当程序加载时,它从SharedReferences文件读取日期并设置textview文本。单击该按钮时,它将启动一个新活动,该活动具有一个日期选择器,允许您选择要保存在SharedReferences文件中的日期。当您单击“确定”或按“更新”活动上的“上一步”按钮时,如果文本视图已更改,我将尝试使用新日期更新文本视图,但每次运行onresume时,它都不会更新文本视图文本。我曾尝试使主线布局无效,以使其重新绘

我的代码我的文本视图有问题,当主活动恢复时它不会更新。基本上它有一个文本视图和一个按钮。当程序加载时,它从SharedReferences文件读取日期并设置textview文本。单击该按钮时,它将启动一个新活动,该活动具有一个日期选择器,允许您选择要保存在SharedReferences文件中的日期。当您单击“确定”或按“更新”活动上的“上一步”按钮时,如果文本视图已更改,我将尝试使用新日期更新文本视图,但每次运行onresume时,它都不会更新文本视图文本。我曾尝试使主线布局无效,以使其重新绘制,但这不起作用。我已尝试使用startactivityforresult启动活动,但即使在onactivityresult中处理textview更新时,这也不起作用

这是主类的代码:

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每次都会更新。