0

私のアプリケーションには2つのアクティビティがあります。最初のアクティビティには2つのスピナーがあり、スピナーの値を設定すると次のアクティビティに進みます。最初のアクティビティに戻ると、データが更新されます。以前に設定された値を確認したいのですが、どのようにすればよいのでしょうか。どなたか助けてください。

ここで私のアクティビティライフサイクルは次のように呼ばれます:

1)Activity1からActivity2に移動するとき

onPause()

onStop()

2) 最初のアクティビティに戻ったとき

onStart()

onResume()

値を onSaveInstance 状態に保存しましたが、onRestoreInstance 状態は呼び出されません。私のコードは次のとおりです:@Override

protected void onSaveInstanceState(Bundle outState) {
        // TODO Auto-generated method stub
        super.onSaveInstanceState(outState);
        strAutoCompleteValue = autoPatientList.getSelectedItem().toString();
        strSpinnerAppointment = selectAppointment.getSelectedItem().toString(); 
        outState.putString("PatientName", strAutoCompleteValue);
        outState.putString("AppointmentDate", strSpinnerAppointment);

         Toast.makeText(this, "onSaved", 3000).show();
    }   

@Override
    protected void onRestoreInstanceState(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onRestoreInstanceState(savedInstanceState);
        String pName = savedInstanceState.getString("PatientName");
        String appDate = savedInstanceState.getString("AppointmentDate");

       Toast.makeText(this, "onRestore", 3000).show();
    }

事前に感謝します。

4

4 に答える 4

1

onSaveInstanceStateを使用 して、スピナーの選択をバンドルに保存します。次に、onCreate(Bundle)アクティビティが再作成されたら、バンドルからデータを取得してスピナーをリセットします。

于 2013-06-20T08:02:43.840 に答える
0

このようにしてみてください

Spinner Spinner_ = (Spinner) findViewById(R.id.Spinner_);

public void onItemSelected(AdapterView<?> arg0, View arg1, int arg2, long arg3) 
 {
            // TODO Auto-generated method stub
Spinner recent_Spinner = (Spinner) arg0;
Integer selected_Spinner_ = Spinner_.getSelectedItemPosition();
nw_global.set_Spinner_(selected_Spinner_.toString());
 }
 public void onNothingSelected(AdapterView<?> arg0) 
  {
    // TODO Auto-generated method stub
 }
if (nw_global.get_Spinner_() != null && !nw_global.get_Spinner_().isEmpty())
    {
        Spinner_.setSelection(Integer.parseInt(nw_global.get_Spinner_().replace("'", "")));
    } 
    else
    {
        Spinner_.setSelection(0);
    }

そしてこれを nw_global で行います

public class nw_global extends Application {

private static String scale_spinner;
public static void set_Spinner_(String i) {
    // TODO Auto-generated method stub
    nw_global.scale_spinner = i;
}
public static String get_Spinner_(){

    return scale_spinner;
    }
 }

ここにサンプルコードがあります..うまくいくことを願っています

于 2013-06-20T08:27:53.913 に答える
0

状態を Bundle に保存するにはonSaveInstanceStateを実装し、状態を復元するにはonRestoreInstanceStateまたはonCreateを実装する必要があります。

于 2013-06-20T08:06:37.530 に答える
0

プログラミングをしたいときAndroidは、そのような一般的なタスクに関する多くの情報があるため、Google ドキュメントを実際に検索する必要があります。たとえば、この特定の問題はここでカバーされています: http://developer.android.com/guide/topics/data/data-storage.html

共有プリファレンス セクションを見ると、サンプル コードも見つかります。

于 2013-06-20T08:03:05.603 に答える