2017-08-13 14 views
0

私はEditTextとButtonの助けを借りてSharedPreferencesに文字列を保存するために必要なコードをすべて完了しましたが、コードを取得してTextViewに永久に表示する方法はわかりませんxmlとjavaの両方TextViewにSharedPreferences文字列を表示するにはどうすればよいですか?

// get the saved string from shared preferences 
String name1 = sharedpref.getString("name1", "default value"); 
// set reference to the text view 
textv = (TextView) findViewById(R.id.text1); 
// set the string from sp as text of the textview 
textv.setText(name1); 

は、例えばupdateNameTextView()のために、新しい方法にこれらの行を入れて、そしてonCreateにし、あなたのクリックのリスナーにそれを呼び出す:として

<EditText 
    android:id="@+id/edit" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:hint="@string/hint" 
    android:layout_gravity="center"/> 

<Button 
    android:id="@+id/btn" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:text="@string/button" 
    android:layout_gravity="center"/> 

<TextView 
    android:id="@+id/text1" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:text="@string/empty" 
    android:layout_gravity="center" /> 


public class MainActivity extends AppCompatActivity { 

EditText editt; 
Button btn; 
SharedPreferences sharedpref; 
TextView textv; 

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

    editt = (EditText) findViewById(R.id.edit); 
    btn = (Button) findViewById(R.id.btn); 
    sharedpref = getSharedPreferences("name1",MODE_PRIVATE); 

    btn.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      String str = editt.getText().toString(); 
      SharedPreferences.Editor editor = sharedpref.edit(); 
      editor.putString("name1",str); 
      editor.apply(); 
     } 
    }); 
    textv = (TextView) findViewById(R.id.text1); 
} 

答えて

0

それは簡単です。

+0

完璧!ありがとう、それはうまく動作します!方法やものを作ることなくそのまま放置しないのはなぜですか? –

+0

ちょうど のため)あなたはあなたのアプリを起動するときにsharedpreferences の値を表示し、b)新しい値を保存すると、テキストビューの文字列も更新する必要があります:) 2つの場所があり、コードの重複を避ける1つの場所(メソッド)に配置し、このメソッドを両方の場所から呼び出します。 – Besnik

+0

ありがとうBesnik!あなたは正しいです! :) –