1

내 응용 프로그램에서 나는 다른 개체 필드를 나타내는 5 문자열 배열이 있습니다. 즉안드로이드에서 문자열을 저장하는 가장 효과적인 방법

String_A[1], 
String_B[1], 
String_C[1], 
String_D[1], 
String_E[1], 

모든

는 (정말 개체가 아닙니다) 같은 객체의 속성입니다.


이제는 내가 만들고있는 새로운 활동에서 사용할 수 있도록 저장하려고합니다. 주위에 객체를 전달할 수 없기 때문에 공유 환경 설정에서 객체를 저장해야한다고 생각했습니다.

내 질문은 : 그들을 별도의 문자열로 저장하거나 모든 필드가있는 새 클래스를 만든 다음 개체를 직렬화해야합니까?

메모리 사용 측면에서 가장 좋은 방법은 무엇입니까? 실제로 비슷한 기능을 얻을 수있는 다른 방법이 있습니까? 마이크

답변

2

사전에

덕분에 그 문자열 배열의 각은 "충분"큰 경우 당신이 그들을 저장 하시겠습니까 나타납니다 - 당신은 SQLite는 고려 했는가? SharedPreferences는 키 - 값 쌍에 원시 데이터를 저장하는 데 가장 효과적입니다. 이 링크를 확인하십시오 - 당신이 가진 옵션에 대한 깔끔한 비교가 있습니다 - http://developer.android.com/guide/topics/data/data-storage.html

+0

그래, 그냥 직렬화 된 객체가 SharedPreferences에 저장하기에는 크기가 큰 것을 알게되었다 ... 나는 회신을 위해 데이터베이스 .. 감사를 사용해야 할 것이다. – mixkat

+0

그래, 미안하다. :) – mixkat

0

의도를 통해 객체를 전달할 수 있습니다. 인 텐트의 추가 기능은 번들을 저장하여 지정된 활동으로 보낼 수 있지만 명시 적으로 전송하지 않고 이후 활동 에서처럼 언제든지 호출 할 수는 없습니다. 이것이 다른 활동으로의 한 번 전달이라면, 아마도 그것을 사용하고 싶을 것입니다.

public void onClick(View v) { 
      switch(v.getId()) { //this references the unique ID of the view that was clicked 
       case R.id.Button01: //this is what happens when the Button in the XML with android:id="@+id/Button01" is clicked 
      Intent nameGreet = new Intent(this, MainMenu.class);//creates Intent which will send the EditText input 
        String theName = firstName.getText().toString();// creates a new string named "theName" which is the text from an EditText called "firstName" 
        nameGreet.putExtra("helloName", theName);//puts the input from EditText into the Intent, this is a key/value pair 
        this.startActivity(nameGreet);//setting off the Intent 
        break; 

는 그런 다음과 같이 그것을 잡을 :이 도움이

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    this.setContentView(R.layout.main_menu); 
    String personsname = this.getIntent().getStringExtra("helloName"); 
    welcome = (TextView)this.findViewById(R.id.TextView01); 
    welcome.setText(personsname); 

희망 여기에

http://developer.android.com/reference/android/content/Intent.html#putExtras%28android.content.Intent%29

내가 잠시 다시 만든 테스트 응용 프로그램의 예입니다.

+0

오, 아니, 그거 알아. 당신은 원시적 인 데이터를 전달할 수 있습니다. 나는 실제 물건에 대해 이야기하고있었습니다. 어쨌든 회신을위한 감사합니다 ... – mixkat

+0

오, 제 실수. SQLite에 대한 도움이 필요하십니까? – JMRboosties

+0

실제 객체를 전달할 수 있습니다 - 그것들은'Parcelable' 또는'Serializable'이어야합니다. –

0

Intent을 사용하여 Serializable을 전달할 수 있습니다.

Intent.putExtra(String name, Serializable value).

관련 문제