0

私が実現しようとしていること

  • ユーザーのクリックbabyOneButton
  • babyOneButton は、GENERAL_PREFERENCES.xml共有設定ファイルに profile_selected 属性を設定します
  • babyOneButtonXMLファイルが存在するかどうか調べます
  • (1) その場合は、プロファイルを編集するページにユーザーを送信します。
  • (2) そうでない場合は、新しいプロファイルを作成するページにユーザーを送信します
  • どちらのページにも、'BABY_ONE_PROFILE.xml' データが表示されます。

実際に行っていること:

  • ユーザーのクリックbabyOneButton
  • 送信を押した後、baby2 の名前があるべき場所NewChildProfileに名前が表示されることがあります。MainActivity
  • XML ファイルが存在するかどうかに関係なく、ユーザーは常に新しいプロファイルを作成するページに送られます。(if/else ステートメントを切り替えると、それらは常に管理ページに送信されるため、プロファイルが存在するかどうかを確認する方法が正しくないと想定しています)。
  • BABY_TWO_PROFILEは常に に表示されるデータNewBabyProfileです。

MainActivity.java public class MainActivity extends Activity {

SharedPreferences generalPrefs;
SharedPreferences.Editor generalPrefsEditor; 
public static String profileSelected;
public static String babyOneName;
public static String babyTwoName;
File file1, file2, file3;

@Override
protected void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    file1 = new File("/data/data/com.parentingreminders/shared_prefs/BABY_ONE_PROFILE.XML");
    file2 = new File("/data/data/com.parentingreminders/shared_prefs/BABY_TWO_PROFILE.XML");

    String BABY_ONE_PROFILE = getString(R.string.baby_one_profile);
    String BABY_TWO_PROFILE = getString(R.string.baby_two_profile);

    SharedPreferences babyOneProfile = getSharedPreferences(BABY_ONE_PROFILE, 0);
    SharedPreferences babyTwoProfile = getSharedPreferences(BABY_TWO_PROFILE, 0);

    String babyOneName = babyOneProfile.getString("name", "name");
    TextView babyOneNameOutput = (TextView) findViewById(R.id.baby_1_name);
    babyOneNameOutput.setText(babyOneName.substring(0,1).toUpperCase() + babyOneName.substring(1));

    String babyTwoName = babyTwoProfile.getString("name", "name");
    TextView babyTwoNameOutput = (TextView) findViewById(R.id.baby_2_name);
    babyTwoNameOutput.setText(babyTwoName.substring(0,1).toUpperCase() + babyTwoName.substring(1));
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.new_baby_profile, menu);
    return true;
}

public void babyOneButtonClick(View view) {

    profileSelected = "1";
    generalPrefs = getSharedPreferences(getString(R.string.general_preferences), Context.MODE_PRIVATE);
    generalPrefsEditor = generalPrefs.edit();
    generalPrefsEditor.putString("profile_selected", profileSelected).commit();

    if (file1.exists()) {
        Intent goToManageBaby1 = new Intent(this, ManageBaby1.class);
        startActivity(goToManageBaby1);
    } else {
        Intent goToNewBabyProfile = new Intent(this, NewBabyProfile.class);
        startActivity(goToNewBabyProfile);
    }

}

public void babyTwoButtonClick(View view) {

    profileSelected = "2";
    generalPrefs = getSharedPreferences(getString(R.string.general_preferences), Context.MODE_PRIVATE);
    generalPrefsEditor = generalPrefs.edit();
    generalPrefsEditor.putString("profile_selected", profileSelected).commit();


    if (file2.exists()) {
        Intent goToManageBaby1 = new Intent(this, ManageBaby1.class);
        startActivity(goToManageBaby1);
    } else {
        Intent goToNewBabyProfile = new Intent(this, NewBabyProfile.class);
        startActivity(goToNewBabyProfile);
    }

}}

NewBabyProfile.java public class NewBabyProfile extends Activity {

public static String gender = "na";
public static String name = "na";
public static String dobMonth = "January";
public static String dobDay = "01";
public static String dobYear = "1900";
public static String feedingOz = "00";
public static String feedingHrs = "00";
public static String awakeHrs = "00";
public static int activeStartHour = 0;
public static int activeStartMinute = 0;
public static int activeEnd = 0;
public static String allDay = "no";
public static Spinner mSpinner;
public static int profileNumber;
public static String profileCreated;
public static String profileSelected;

SharedPreferences babyProfile, generalPrefs;
SharedPreferences.Editor editor, generalPrefsEditor;


@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_new_baby_profile);

    mSpinner = (Spinner) findViewById(R.id.dob_month);
    // Create an ArrayAdapter using the string array and a default spinner layout
    ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(this,
            R.array.months_array, android.R.layout.simple_spinner_item);
    // Specify the layout to use when the list of choices appears
    adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
    // Apply the adapter to the spinner
    mSpinner.setAdapter(adapter);

    generalPrefs = getSharedPreferences(getString(R.string.general_preferences), Context.MODE_PRIVATE);
    generalPrefsEditor = generalPrefs.edit();


    // SharedPreferences initializations
    profileSelected = generalPrefs.getString("profile_selected", "profileSelected");

    if (profileSelected == "1") {
        babyProfile = getSharedPreferences(getString(R.string.baby_one_profile), 0);
    } 

    if (profileSelected == "2"){
        babyProfile = getSharedPreferences(getString(R.string.baby_two_profile), 0);
    }

    editor = babyProfile.edit();


}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.new_baby_profile, menu);
    return true;
}

public void onRadioButtonClicked(View genderSelection){
    boolean checked = ((RadioButton) genderSelection).isChecked();

    switch(genderSelection.getId()) {
        case R.id.gender_boy:
            if (checked)
                gender = "boy";
            break;

        case R.id.gender_girl:
            if (checked)
                gender = "girl";
            break;
    }


}



public void submitNewBabyProfile(View view) {

    // Submit name
    EditText nameInput = (EditText)findViewById(R.id.name_input);
    name = nameInput.getText().toString().trim();
    editor.putString("name",name).commit();

    // Submit gender 
    editor.putString("gender",gender).commit();

    // Submit date of birth
    String dobMonth = mSpinner.getSelectedItem().toString();
    editor.putString("dob_month",dobMonth).commit();

    EditText dobDayInput = (EditText)findViewById(R.id.dob_day);
    dobDay = dobDayInput.getText().toString().trim();
    editor.putString("dob_day",dobDay).commit();

    EditText dobYearInput = (EditText)findViewById(R.id.dob_year);
    dobYear = dobYearInput.getText().toString().trim();
    editor.putString("dob_year",dobYear).commit();

    // Submit feeding information
    EditText feedingOzInput = (EditText)findViewById(R.id.feeding_oz_input);
    feedingOz = feedingOzInput.getText().toString().trim();
    editor.putString("feeding_oz_input",feedingOz).commit();

    EditText feedingHrInput = (EditText)findViewById(R.id.feeding_hr_input);
    feedingHrs = feedingHrInput.getText().toString().trim();
    editor.putString("feeding_hr_input",feedingHrs).commit();

    // Submit nap information
    EditText awakeInput = (EditText)findViewById(R.id.awake_input);
    awakeHrs = awakeInput.getText().toString().trim();
    editor.putString("awake_input",awakeHrs).commit();


    // Submit notification active times

    // Return to main activity
    Intent goToMainActivity = new Intent(this, MainActivity.class);
    startActivity(goToMainActivity);
}

}

4

2 に答える 2

0

SharedPreferences のファイル名は内部的なものです。そのため、API があります。交換してみる

if (file2.exists())

これとともに

if(babyTwoProfile.contains("name"))
于 2013-10-17T08:40:01.240 に答える