2016-06-14 5 views
1

Ich bin neu in der Entwicklung von Android-Anwendung und derzeit entwickle ich eine Android-Software, die Benutzer benötigen, um eine Menge Daten einzugeben und speichern Sie es auf sharedPreferences als Datenbank. Hier ist Beispiel meiner Codierung:Aufruf Satz nach Eingabe

public static final String DEFAULT= "no data found"; 

Dann:

protected void storeData(SharedPreferences.Editor editor, String key, EditText et) { 
    String content = et.getText().toString(); 
    if ("".equals(content)) { 
     editor.remove(key); 
    } else { 
     editor.putString(key, content); 
    } 
} 

Zum Speichern von Benutzereingaben:

public void OnClickSave(){ 
      button17=(Button)findViewById(R.id.button17); 
      button17.setOnClickListener(
        new View.OnClickListener() { 
         @Override 
         public void onClick(View v) { 
          name = (EditText) findViewById(R.id.name); 
          gender = (EditText) findViewById(R.id.gender); 
          age = (EditText) findViewById(R.id.age); 
          fruit = (EditText) findViewById(R.id.fab_fruit); 
          music = (EditText) findViewById(R.id.fab_music); 
SharedPreferences sharedPreferences = getSharedPreferences("Database", Context.MODE_PRIVATE); 
         SharedPreferences.Editor editor = sharedPreferences.edit(); 
         storeData(editor,"name", name); 
         storeData(editor,"gender", gender); 
         storeData(editor,"age", age); 
         storeData(editor,"fruit", fruit); 
         storeData(editor,"music", music); 
         editor.commit(); 
         Toast.makeText(MainActivity7.this, "Data was saved!!!", Toast.LENGTH_SHORT).show(); 
        } 
       } 
     ); 
    } 

Für das Laden der Daten habe ich es so etwas wie dieses:

public void OnClickLoad(){ 
      button38=(Button)findViewById(R.id.button38); 
      button38.setOnClickListener(
        new View.OnClickListener() { 
         @Override 
         public void onClick(View v) { 
    SharedPreferences sharedPreferences = getSharedPreferences("Database", Context.MODE_PRIVATE); 
      String name = sharedPreferences.getString("name", DEFAULT); 
      String gender = sharedPreferences.getString("gender", DEFAULT); 
      String age = sharedPreferences.getString("age", DEFAULT); 
      String fruit = sharedPreferences.getString("fruit", DEFAULT); 
      String music = sharedPreferences.getString("music", DEFAULT); 
      } 
        } 
      ); 
AlertDialog.Builder a_builder = new AlertDialog.Builder(MainActivity12.this); 
      a_builder.setMessage(
        "Data 1 name is :"+ name + "\n"+ 
        "Data 1 gender is :"+ gender + "\n"+ 
        "Data 1 age is :"+ age + "\n"+ 
        "Data 1 favorite fruit is :"+ fruit + "\n"+ 
        "Data 1 favorite music is :"+ music + "\n"+ 
) 

        .setCancelable(false) 
        .setPositiveButton("Proceed", new DialogInterface.OnClickListener() { 
         @Override 
         public void onClick(DialogInterface dialog, int which) { 
          dialog.cancel(); 
         } 
        }) 
        .setNegativeButton("Return", new DialogInterface.OnClickListener() { 
         @Override 
         public void onClick(DialogInterface dialog, int which) { 
          dialog.cancel(); 
         } 
        }) 
      ; 
      AlertDialog alert= a_builder.create(); 
      alert.setTitle("Checking"); 
      alert.show(); 
     } 

Als ich bereits den Sente nce im Builder, so, wenn der Benutzer nicht zu der Frage beantwortet hat, wird der Ausgang worden wie

   Data 1 name is : Sample1 
       Data 1 gender is : male 
       Data 1 age is : no data found 
       Data 1 favorite fruit is : apple 
       Data 1 favorite music is : no data found 

ich wissen wollen, ob es eine alternative Art und Weise ist, so dass, wenn Benutzer keine Eingabe irgendetwas, die entsprechenden Sätze werden nicht angezeigt, wie unten:

 Data 1 name is : Sample1 
     Data 1 gender is : Male 
     Data 1 favorite fruit is : apple 

Dieses Beispiel der Codierung ist, in meiner Anwendung erforderlich ich Benutzer zur Eingabe von 20-30 Daten. Vielen Dank im Voraus für alle, die helfen wollen. * Es tut mir leid, wenn der Titel Verwirrung stiftet, weil ich nicht sicher bin, worauf es sich beziehen sollte.

Antwort

2

Statt einen Standard String für Ihre Präferenzen verwenden, können Sie null als Standardwert verwenden:

String name = sharedPreferences.getString("name", null); 
String gender = sharedPreferences.getString("gender", null); 
// ... 

Danach konnte man einfach null Wert Prüfungen durchführen und Ihre Nachricht konstruieren entsprechend:

StringBuilder messageBuilder = new StringBuilder(); 

if(name != null) { 
    messageBuilder.append("Data 1 name is: " + name); 
    messageBuilder.append("\n"); 
} 
if(gender != null) { 
    messageBuilder.append("Data 1 gender is: " + gender); 
    messageBuilder.append("\n"); 
} 
// ... 

a_builder.setMessage(messageBuilder.toString()); 
Verwandte Themen