1

私は私のコードで 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();
        }
    }
}

ボタンをもう一度クリックするとテキストビューが更新されますが、メインのアクティビティに戻ると、開始したインテントで行った変更は表示されません。

4

2 に答える 2

1

以下のように変更してくださいonResume()..

@Override
protected void onResume() {
    spSettings = getSharedPreferences(SETTINGS_FILE, 0);
    tvDate.setText(spSettings.getString("Date", "ERROR"));
    super.onResume();
}
于 2013-09-06T04:13:41.750 に答える
0

Activityで開始した から戻った後、 notstartActivityForResult()で結果を処理する必要があります。onActivityResult()onResume()

この例に従ってください: http://developer.android.com/training/basics/intents/result.html

于 2013-09-06T00:52:33.613 に答える