2016-04-03 63 views
1

所以我有一個活動,每個按鈕都帶有一個TextView波紋管,當我點擊按鈕出現一個帶有EditText和'完成'按鈕的對話框片段時,我在EditText,點擊'完成',ti改變文本下方我點擊的按鈕,這是工作正常。我需要的是用我已有的共享偏好設置中的新文本替換先前的文本。Android:在DialogFragment中訪問SharedPreferences

我SharedPreferences:SharedPreferences prefs = getPreferences(Context.MODE_PRIVATE);

打開對話框並傳遞TextView中的ID:

fm = getFragmentManager(); 
myFragment = new Fragment_Subject_Edit(); 

     FirstButton.setOnLongClickListener(new View.OnLongClickListener() { 
     @Override 
     public boolean onLongClick(View v) { 
      Bundle data = new Bundle(); 
      data.putInt("ID", FirstText.getId()); 
      myFragment.setArguments(data); 

      myFragment.show(fm, "ClassEditor"); 
      return false; 
     } 
    }); 

收到ID在對話片段:

if (getArguments() != null) { 

     Bundle data = getArguments(); 
     int id = data.getInt("ID"); 

     mTextView = (TextView) getActivity().findViewById(id); 

    } 

添加新的文本TextView的波紋管按鈕:

DoneButton.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      String newText = mEditText.getText().toString(); 
      mTextView.setText(newText); 
      getDialog().dismiss(); 

     } 
    }); 

這裏的問題其實只是如何更新共享偏好

回答

1

你可以簡單的使用Editor以節省SharedPreferences

新的數據因此,在這種情況下,你的代碼會是這樣

DoneButton.setOnClickListener(new View.OnClickListener() { 
    @Override 
    public void onClick(View v) { 
     String newText = mEditText.getText().toString(); 
     mTextView.setText(newText); 
     SharedPreferences.Editor e = getActivity().getPreferences(Context.MODE_PRIVATE).edit(); 
     editor .putString ("key","your_value"); 
     editor .commit(); 
     getDialog().dismiss(); 

    } 
}); 
+0

好吧,那麼現在,我必須爲每個鍵值創建一個條件,還是有一種更簡單的方法來檢查單擊了哪個按鈕,然後選擇相應的鍵? –

+0

你可以''onClickListener'實現你的片段,並且可以檢查'switch/case'塊的條件。 –

+0

好的,這是工作,謝謝! –