2016-05-09 17 views
0

私はAndroidアプリケーションの開発には新しく、現在はかなりの量のデータを入力してデータベースとしてsharedPreferencesに保存する必要があるアンドロイドソフトウェアを開発しています。以下に示すようにデフォルト値に空白/ヌル値を設定します

public static final String DEFAULT= "NONE"; 

ユーザによって入力されたデータを保存し、コードの部分である:ここで私の符号化である

データのローディングのため
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); 
         material = (EditText) findViewById(R.id.material); 
         type = (EditText) findViewById(R.id.type); 
         proper1 = (EditText) findViewById(R.id.proper1); 
         p1 = (EditText) findViewById(R.id.p1); 
         p2 = (EditText) findViewById(R.id.p2); 
         p3 = (EditText) findViewById(R.id.p3); 
         po1 = (EditText) findViewById(R.id.po1); 
         po2 = (EditText) findViewById(R.id.po2); 
         po3 = (EditText) findViewById(R.id.po3); 
         c1 = (EditText) findViewById(R.id.c1); 
         c2 = (EditText) findViewById(R.id.c2); 
         c3 = (EditText) findViewById(R.id.c3); 

         SharedPreferences sharedPreferences = getSharedPreferences("Database", Context.MODE_PRIVATE); 
         SharedPreferences.Editor editor = sharedPreferences.edit(); 
         editor.putString("name", name.getText().toString()); 
         editor.putString("material", material.getText().toString()); 
         editor.putString("type", type.getText().toString()); 
         editor.putString("proper1",proper1.getText().toString()); 
         editor.putString("p1", p1.getText().toString()); 
         editor.putString("p2", p2.getText().toString()); 
         editor.putString("p3", p3.getText().toString()); 
         editor.putString("po1", po1.getText().toString()); 
         editor.putString("po2", po2.getText().toString()); 
         editor.putString("po3", po3.getText().toString()); 
         editor.putString("c1", c1.getText().toString()); 
         editor.putString("c2", c2.getText().toString()); 
         editor.putString("c3", c3.getText().toString()); 
         editor.commit(); 
         Toast.makeText(MainActivity.this, "Saved!!!", Toast.LENGTH_LONG).show(); 
        } 
       } 
     ); 
    } 

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 material = sharedPreferences.getString("material", DEFAULT); 
      String type = sharedPreferences.getString("type", DEFAULT); 
      String proper1 = sharedPreferences.getString("proper11", DEFAULT); 
      String p1 = sharedPreferences.getString("p1", DEFAULT); 
      String p2 = sharedPreferences.getString("p2", DEFAULT); 
      String p3 = sharedPreferences.getString("p3", DEFAULT); 
      String po1 = sharedPreferences.getString("po1", DEFAULT); 
      String po2 = sharedPreferences.getString("po2", DEFAULT); 
      String po3 = sharedPreferences.getString("po3", DEFAULT); 
      String c1 = sharedPreferences.getString("c1", DEFAULT); 
      String c2 = sharedPreferences.getString("c2", DEFAULT); 
      String c3 = sharedPreferences.getString("c3", DEFAULT); 
    } 
        } 
      ); 
AlertDialog.Builder a_builder = new AlertDialog.Builder(MainActivity12.this); 
      a_builder.setMessage(
        "Data input 1:"+ name + "\n"+ material +"\n"+ type +"\n"+ proper1 +"\n"+ 
        p1+ "\n"+p2 +"\n"+ p3 + "\n"+po1 +"\n"+ po2 +"\n"+po3 +"\n"+ s1 +"\n"+s2 +"\n"+s3 + "\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(); 
     } 

ユーザーがデータを入力せずに保存ボタンを押さなかった場合、データはDEFAULTデータになります.DEFAULTデータは設定されていません。

public static final String DEFAULT= "NONE"; 

ただし、ユーザーがデータを入力せずに保存ボタンを押すと、データの出力は空白になります。

ここで、空白入力または空白入力をDEFAULTデータに設定することは可能ですか? (ユーザーが入力(またはスペースのみ)を挿入して保存しなかった場合、対応するデータはNONEです)

thisと同様の解決策を参照しています。手動で行うことができます。それをより速くしてSharepreferancesに入れる代替ソリューションはありますか?

お気軽にお気軽にお問い合わせください。私の貧しい言葉には申し訳ありません。

+0

何だろう誰かがこれらの編集テキストの1つに「なし」と入力した場合はどうしますか? – petey

+0

@petey誰かが空白のままにするか、 "NONE"を入力しても大丈夫です。なぜなら、データがない場合と同じ意味を示すからです。私は出力データを空白にしないようにしようとしています。あなたが手伝ってくれることを願います。ありがとう。 – GentleG

+0

@GentleG DEFAULTの優先権を取得して削除し、ダブルクォータを使用してください。 –

答えて

0

ただし、ユーザーがデータを入力せずに保存ボタンを押すと、データの出力は空白になります。

空の文字列""です。

ここで、空白の入力または空白の入力をDEFAULTデータに設定することは可能ですか?

これは間違った方法です。 は入力したときに共有の設定への入力をにしてはいけません。それから読んでいる間にあなたはDEFAULTを得るでしょう。私たちのヘルパーへの呼び出しで

editor.putString("p1", p1.getText().toString()); 

:それでは

protected void storeData(SharedPreferences.Editor editor, String key, EditText et) { 
    String content = et.getText().toString(); 

    // is there any content? Empty string is no content 
    if ("".equals(content)) { 
     // ensure we do not retain previously stored value for that key 
     editor.remove(key); 
    } else { 
     // save new data in the storage 
     editor.putString(key, content); 
    } 
} 

などのヘルパーは、あなたがこのように、直接そのプット文字列データを持っているすべての呼び出しを置き換える作る

storeData(editor, "p1", p1); 
+0

インターネットで見つかったいろいろな方法を混ぜて、これで終わるので、ありがとう、ごめんなさい。 詳細を教えていただけますか?私は与えられたソリューションを実装しようとしましたが、失敗しました。 ヘルパー/コールデータの保存方法を教えてください。 実際に私はすべてのデータを入力することを期待していますが、EditTextの一部をスキップする場合は、ロード時に空の文字列をNONEにします。とにかく、以下の2つの間で相違がありますか? editor.putString( "p1"、p1.getText()。toString()); storeData(エディタ、 "p1"、p1); – GentleG

+0

私の答えをお読みください。あなたのクラスに 'storeData'ヘルパーを追加してから、' editor.putString() 'のすべての呼び出しをhelperの呼び出しで置き換えます(answerに示すように)。 "トリック"は、データが '' ''(空文字列)の場合、共有設定にエントリを保存することではありません。そうすれば、あなたが読んでいるときに、データが見つからず、あなたはデフォルト値を得るでしょう。私はコードにいくつかのコメントを追加しました –

+0

あなたの追加したコメントは本当にヘルパー機能を理解するのに大いに役立ちます。 これは私が必要としたもので、私の問題を解決するのに役立ちます。 本当にありがとうございます!私はそこに解決ソリューションを追加します、あなたに信用。再度、感謝します! – GentleG

関連する問題