2016-07-30 3 views
-1

탐색 중에 여러 활동에 대한 데이터를 저장하는 방법을 알고 싶었습니다.여러 Android 환경에서 데이터 저장

내 응용 프로그램에 2 개의 양식이 있습니다. account detailspersonal details은 각각 자체 활동을합니다. 사용자가 account details 활동에서 next 버튼을 클릭하면 활동이 personal details 번으로 이동합니다. personal details 활동에는 사용자를 account details 활동으로 되돌리기위한 뒤로 버튼이 있습니다. 내가 원하는 무엇

는 사용자가 next 버튼을 클릭하면 사용자가 account details 활동에 반환 할 때이 표시 될 수 있도록, 그것은 account details 활동에 데이터를 저장하는 것입니다. 또한 사용자가 personal details 활동에 데이터를 입력하고 back을 클릭하여 account details 활동으로 다시 이동하면 사용자가 personal details 활동으로 다시 이동하면 자신의 데이터를 찾을 수 있도록 personal details 활동의 데이터를 저장해야합니다.

은 내가 무슨 짓을하는 것은 onActivityResult 메소드를 오버라이드 (override)과 같이 account details 활동에 데이터를 저장하기위한 몇 가지 방법을 추가 :

package com.example.karyukie.application; 

import android.app.Activity; 
import android.content.DialogInterface; 
import android.content.Intent; 
import android.os.Bundle; 
import android.support.v7.app.AlertDialog; 
import android.support.v7.app.AppCompatActivity; 
import android.support.v7.widget.Toolbar; 
import android.text.InputType; 
import android.view.Menu; 
import android.view.MenuItem; 
import android.view.View; 
import android.widget.Button; 
import android.widget.EditText; 
import android.widget.LinearLayout; 
import android.widget.Spinner; 
import android.widget.TextView; 
import android.widget.Toast; 

public class AccountDetails extends AppCompatActivity { 

EditText usernameSignUp, newPwd, confirmPwd, securityA; 
Spinner securityQ; 

private static final String USERNAME_SIGN_UP = "usernameSignUp_key"; 
private static final String PWD_SIGN_UP = "pwdSignUp_key"; 
private static final String SECURITY_Q = "securityQ_key"; 
private static final String SECURITY_A = "securityA_key"; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    usernameSignUp = (EditText) findViewById(R.id.usernameSignUp_editText); 
    newPwd = (EditText) findViewById(R.id.newPwd_editText); 
    confirmPwd = (EditText) findViewById(R.id.confirmPwd_editText); 
    securityQ = (Spinner) findViewById(R.id.securityQ_spinner); 
    securityA = (EditText) findViewById(R.id.securityA_editText); 

    securityQ.setSelection(9); 

    Button next = (Button) findViewById(R.id.next_button); 
    assert next != null; 
    next.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 
       Bundle accountDetails_data = saveData(); 
       Intent intent = new Intent(getApplicationContext(), PersonalDetails.class); 
       intent.putExtras(accountDetails_data); 
       startActivityForResult(intent, 1); 
      } 
     } 
    }); 

public Bundle saveData() { 
    String usernameSignUp_value = usernameSignUp.getText().toString(); 
    String pwdSignUp_value = newPwd.getText().toString(); 
    int securityQ_value = securityQ.getSelectedItemPosition(); 
    String securityA_value = securityA.getText().toString(); 

    Bundle data = new Bundle(); 

    data.putString(USERNAME_SIGN_UP, usernameSignUp_value); 
    data.putString(PWD_SIGN_UP, pwdSignUp_value); 
    data.putInt(SECURITY_Q, securityQ_value); 
    data.putString(SECURITY_A, securityA_value); 

    return data; 
} 

@Override 
protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
    if(requestCode == 1) { 
     if(resultCode == Activity.RESULT_OK) { 
      usernameSignUp.setText(data.getStringExtra(USERNAME_SIGN_UP)); 
      newPwd.setText(data.getStringExtra(PWD_SIGN_UP)); 
      confirmPwd.setText(data.getStringExtra(PWD_SIGN_UP)); 
      securityQ.setSelection(data.getIntExtra(SECURITY_Q, 10)); 
      securityA.setText(data.getStringExtra(SECURITY_A)); 
     } 
    } 
} 

그리고 personal details 활동

가 :

Button back = (Button) findViewById(R.id.back_button); 
    assert back != null; 
    back.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 
      Bundle data = getIntent().getExtras(); 
      Intent intent = new Intent(); 
      intent.putExtras(data); 
      setResult(Activity.RESULT_OK, intent); 
      finish(); 
     } 
    }); 

이가 보인다 잘 작동하지만 이전에 설명한대로 personal details 활동으로 데이터를 저장하는 방법을 파악할 수 없습니다.

+1

인 텐트는 활동간에 데이터를 전송하는 데 적합하지만 앱 전체에 영구 저장을위한 옵션이 더 있습니다. https://developer.android.com/training/basics/data-storage/index.html –

답변

1

인 텐트를 사용하여 데이터를 전달하지 않으려는 경우. Shared Preferences을 사용하여 활동간에 데이터를 공유 할 수도 있습니다. 사용하여 다음 (예를 들어 문자열 데이터를 사용하는) 저장소를

SharedPreferences sharedPreferences = context.getSharedPreferences();

을 :

sharedPreferences.edit().putString("key", "value").apply(); 

및 사용하여 데이터를 얻을 :

당신은 호출하여 환경 설정 객체를 얻을 수

sharedPreferences.getString("key", "default_value"); 
+1

감사합니다. 몇 가지 코드를 제공하여 자세히 설명해 주시겠습니까? –

+0

@brayokaris이 답변에는 코드가 포함되어야한다는 데 동의하지만 링크를 따라 데이터를 저장하고로드하는 방법을 찾을 수도 있습니다. –

+0

@brayokaris 제 편집을 참조하십시오. 나는 당신이 문서를 읽을 시간을 갖기를 제안 할 것이다. –

0

사용자가 계정 세부 정보에서 사람에게 다시 클릭하면 개인 정보 활동을 아직 마치지 않았다면 데이터를 저장할 필요가 없으며 그 반대의 경우도 마찬가지입니다.

공용 정적 변수에 데이터를 저장할 수 있습니다. 이것은 가장 쉬운 방법이며, 활동간에 의도가있는 데이터를 전송할 수도 있습니다.

관련 문제