私は私のコードで textview に問題があります。メインのアクティビティが再開しても更新されません。基本的に、テキストビューとボタンがあります。プログラムがロードされると、sharedpreferences ファイルから日付が読み取られ、textview テキストが設定されます。ボタンをクリックすると、共有設定ファイルに保存する日付を選択できる日付ピッカーを持つ新しいアクティビティが起動します。[OK] をクリックするか、更新アクティビティの [戻る] ボタンを押すと、テキストビューが変更された場合は新しい日付で更新しようとしていますが、onresume を実行するたびにテキストビューのテキストは更新されません。メインのlinearlayoutを無効にして再描画しようとしましたが、うまくいきません。startactivityforresult でアクティビティを開始しようとしましたが、onactivityresult でテキストビューの更新を処理しても機能しません。
これは、メイン クラスのコードです。
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();
}
}
}
ボタンをもう一度クリックするとテキストビューが更新されますが、メインのアクティビティに戻ると、開始したインテントで行った変更は表示されません。